Abrir libro de trabajo como solo lectura

Cuando se trabaja con un libro de Excel usando VBA, puede haber ocasiones en las que necesite obtener información de otro libro.

En esos casos, puede abrir el otro libro en modo de solo lectura para evitar cambios accidentales en los datos mientras muestra y obtiene la información necesaria.

En esta página, se explica cómo abrir un libro en modo de solo lectura usando VBA.

Abrir un libro en modo de solo lectura

Para abrir un libro en modo de solo lectura, especifique True para el argumento ReadOnly del método Workbooks.Open.

Workbooks.Open(ReadOnly:=True)

El siguiente código es un ejemplo de cómo abrir sample.xlsx en la carpeta de documentos del usuario en modo de solo lectura.


Dim wb As Workbook, path As String

' Carpeta de documentos del usuario
path = Environ("USERPROFILE") & "\Documents\sample.xlsx"

' Abrir el libro de trabajo como solo lectura
Set wb = Workbooks.Open(path, ReadOnly:=True)

' Cerrar el libro de trabajo
wb.Close

Puntos a tener en cuenta

Un libro de trabajo abierto en modo de solo lectura no se puede sobrescribir al guardar. Es necesario guardarlo con un nombre diferente.

Si la ruta no es correcta o no tiene permisos de acceso, el libro de trabajo no se abrirá. Se recomienda realizar un manejo de errores adecuado.

El siguiente código es un ejemplo de cómo cerrar un libro de trabajo si ya estaba abierto cuando ocurrió un error.

Public Sub OpenReadOnlyWorkbook()
  On Error GoTo ErrorHandler

  Dim wb As Workbook, path As String

' Carpeta de documentos del usuario
  path = Environ("USERPROFILE") & "\Documents\sample.xlsx"

  ' Abrir el libro de trabajo como solo lectura
  Set wb = Workbooks.Open(path, ReadOnly:=True)

  ' Algún procesamiento

  ' Cerrar el libro de trabajo
  wb.Close

  Exit Sub

ErrorHandler:

    ' Si el libro ya estaba abierto, ciérralo
    If Not wb Is Nothing Then
        wb.Close
    End If

    MsgBox "Se ha producido un error."

End Sub

Resumen

Se presentó un método para abrir un libro de Excel como solo lectura utilizando VBA.

Utilice el código de muestra mencionado anteriormente como referencia y personalícelo según sus necesidades.

#Excel #VBA