Nombres de hojas

03/05/2010 - 23:47 por Avergaston | Informe spam
Hola a todos.
Se puede o como puedo hacer para, obtener los nombres de las hojas de un
libro determinado.

Ejemplo:
Tengo el libro "ventas.xls" que contiene las hojas: colon, feriado, 05 Mayo
y 14. (estos nombres pueden variar en cantidad y longitud).
Se puede saber los nombres de esas hojas desde otro libro llamado,
"union.xls" ???
y volcar estos resultados en este libro. ???

Gracias.

Preguntas similare

Leer las respuestas

#1 Ignacio
04/05/2010 - 11:00 | Informe spam
¡Hola, Avergaston!

Pon el siguiente código en un módulo de VBA, por ejemplo en
ThisWorkbook del libro union.xls:
Private Sub ListaHojas(sArchivo As String)
Dim lib As Workbook, hoj As Worksheet, bAbierto As Boolean

For Each lib In Workbooks
If lib.FullName = sArchivo Then
Exit For
End If
Next
If lib Is Nothing Then
Set lib = Workbooks.Open(Filename:=sArchivo, ReadOnly:=True)
bAbierto = True
End If
For Each hoj In lib.Worksheets
Debug.Print hoj.Name
Next
If bAbierto Then lib.Close
Set lib = Nothing
End Sub

Luego llama al procedimiento desde cualquier evento, por ejemplo desde
Workbook_Open:
Private Sub Workbook_Open()
ListaHojas "C:\Documents and Settings\Mis documentos\ventas.xls"
End Sub

Asegúrate de poner la ruta de tu archivo ventas.xls correctamente.
Cierra y vuelve a abrir el libro union.xls y verás los nombres de las
hojas en la ventana de inmediato. Para poner el resultado en tu libro
acomoda la instrucción Debug.Print por las celdas donde desees ver los
nombre de las hojas.

Espero que te sirva de ayuda.

Un saludo,
Ignacio.
Respuesta Responder a este mensaje
#2 Juan M
04/05/2010 - 12:32 | Informe spam
"Avergaston" escribió
Hola a todos.
Se puede o como puedo hacer para, obtener los nombres de las hojas de un
libro determinado.

Ejemplo:
Tengo el libro "ventas.xls" que contiene las hojas: colon, feriado, 05
Mayo
y 14. (estos nombres pueden variar en cantidad y longitud).
Se puede saber los nombres de esas hojas desde otro libro llamado,
"union.xls" ???
y volcar estos resultados en este libro. ???

Gracias.



Hola,

Por medio de ADO

En un libro nuevo en la celda B2 escribe la ruta con el nombre del libro del
que quieres obtener las hojas

p.e.: c:\temp\ventas.xls

Desde el editor de VB

En el menú herramientas del editor de vb selecciona referencias y elige la
siguiente:

Microsoft ActiveX Data Objects 2.X Library
(la x representa la versión en mi caso he empleado la 2.8)

En un módulo nuevo escribe/pega el siguiente código

Sub ExtraeNombreHojas()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strCnn As String
Dim i As Long, j As Long
Dim strTable As String

Dim ExcelFile As String

ExcelFile = Range("B2")

strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ExcelFile & _
";Extended Properties=Excel 8.0;"

cn.Open strCnn

Range("A10:C100").ClearContents
Range("A9") = "Nombre Hojas"
Range("C9") = "Nombres"
Set rs = cn.OpenSchema(adSchemaTables)

i = 10
j = 10
Do While Not rs.EOF
strTable = rs.Fields("table_name").Value
If Right$(strTable, 1) = "$" Then
Range("A" & i) = Left$(strTable, Len(strTable) - 1)
i = i + 1
Else
Range("C" & j) = strTable
j = j + 1
End If
rs.MoveNext
Loop

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

End Sub

Ejecuta el código desde la hoja donde has puesto el nombre del libro
(Alt+F8).

El resultado serán dos columnas una en la columna A donde aparecerán los
nombres de las hojas
y la columna C donde aparecerán los nombres definidos en las hojas.

Es probable que con libros de excel 2007 de errores.

Un saludo,
Juan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida