Necesito información de cómo identificar el nombre de una hoja de Excel desde Visual Basic sin abrir el archivo correspondiente. Necesito hacer consultas a tablas (hojas) pero sin abrirlas y sin saber qué tablas contiene. Cualquier información será de mucha ayuda.
Su problema se puede solucionar fácilmente mediante la automatización OLE. Para ello lo mejor es que obtenga una referencia a la hoja de cálculo de la que quiere obtener información mediante la función GetObject, y luego acceda a sus miembros mediante automatización. Si, por ejemplo, tuviese un archivo de hoja de cálculo Excel en c:\mis documentos\ llamada Libro1.xls, para averiguar el nombre de las hojas que contiene se haría así:
Dim objWB As Object
Set objWB = GetObject("c:\mis documentos\libro1.xls")
Dim i As Long
Dim Mensaje As String
Mensaje = "Este archivo de Excel contiene " & objWB.Sheets.Count & " hojas en su interior" & vbCrLf
Mensaje = Mensaje & "Los nombres de las hojas son:" & vbCrLf
For i = 1 To objWB.Sheets.Count
Mensaje = Mensaje & "Hoja nº " & i & ": " & objWB.Sheets(i).Name & vbCrLf
Next
MsgBox Mensaje
Set objWB = Nothing
Como vemos es muy sencillo. Sólo tiene que obtener una referencia al libro de trabajo sobre el que desee trabajar y recorrer la colección Sheets para obtener información sobre sus hojas de trabajo. Si quiere obtener más información sobre el modelo de objetos de MS Excel instale la ayuda de VBA de Excel desde el programa de instalación de Office y léasela. Puede obtener también información desde el inspector de objetos de Visual Basic si desde el menú Proyecto/Referencias agrega una referencia a Microsoft Excel Object Library.
No comments:
Post a Comment