Macros con Libros

13/01/2006 - 13:55 por Andres | Informe spam
Hola de nuevo:
Tengo el sig. problema con una macro:
En vez de tener (Libro1, Libro2,...), cada uno tiene el nombre del día ej.(1
de enero 2006, 2 enero 2006,), lo que tengo que hacer es, en una hoja
nueva, hacer una columna con el nombre de todos los libros, en este caso los
dias.
Lo que no encuentro en el comando para la macro que me copie el nombre de
las hojas
muchas gracias
Andrés
 

Leer las respuestas

#1 KL
13/01/2006 - 14:32 | Informe spam
Andres,

Quiza no lo hayas notado, pero estas usando los terminos Libro y Hoja como si fueran sinonimos - de aqui la confusion. El libro es
el archovo de Excel que puede contener 1 o mas hojas. Como tu expoicion termina con la palabra hojas, voy a suponer que
efectivamente te estas refiriendo a hojas. Aquie te pongo un macro que crea una hoja nueva al principio del libro (si ya no existe
una con el mismo nombre) y lista los nombres del resto de las hojas en la columna A:A.

Sub test()
Dim HojaN As Worksheet, Nombre As String, i As Single
Nombre = "Lista de Hojas"
On Error Resume Next
Set HojaN = Worksheets(Nombre)
On Error GoTo 0
Application.ScreenUpdating = False
If HojaN Is Nothing Then
Set HojaN = Worksheets.Add(Sheets(1))
HojaN.Name = Nombre
Else
HojaN.Range("A:A").ClearContents
End If
HojaN.Range("A1") = "Lista"
For Each hoja In Worksheets
If hoja.Name <> HojaN.Name Then
i = i + 1
HojaN.Range("A:A")(i) = hoja.Name
End If
Next hoja
Application.ScreenUpdating = True
End Sub

Si los nombres de las hojas no solo deben listarse sino tambien convertirse en fechas de verdad, podrias intentar el codigo que
sigue. Aunque lo mejor seria pasar de la notacion "D 'de' MMMM 'de' YYYY" en los nombres de hojas a alguna numerica, digamos
"YYYY-MM-DD"

Sub test()
Dim HojaN As Worksheet, Nombre As String, i As Single
Nombre = "Lista de Hojas"
On Error Resume Next
Set HojaN = Worksheets(Nombre)
On Error GoTo 0
Application.ScreenUpdating = False
If HojaN Is Nothing Then
Set HojaN = Worksheets.Add(Sheets(1))
HojaN.Name = Nombre
Else
HojaN.Range("A:A").ClearContents
End If
HojaN.Range("A1") = "Lista"
For Each hoja In Worksheets
If hoja.Name <> HojaN.Name Then
i = i + 1
On Error Resume Next
HojaN.Range("A:A")(i) = DateValue(hoja.Name)
'otra opcion: HojaN.Range("A:A")(i) = CDate(hoja.Name)
If Err.Number <> 0 Then _
HojaN.Range("A:A")(i) = hoja.Name & "(Fecha no reconocida)"
End If
Next hoja
Application.ScreenUpdating = True
End Sub


Saludos,
KL


"Andres" wrote in message news:%
Hola de nuevo:
Tengo el sig. problema con una macro:
En vez de tener (Libro1, Libro2,...), cada uno tiene el nombre del día ej.(1
de enero 2006, 2 enero 2006,), lo que tengo que hacer es, en una hoja
nueva, hacer una columna con el nombre de todos los libros, en este caso los
dias.
Lo que no encuentro en el comando para la macro que me copie el nombre de
las hojas
muchas gracias
Andrés



Preguntas similares