Saltar al contenido

FORMATEAR LIBROS CON EVENTO WORKBOOK_OPEN


Recommended Posts

publicado

Hola amigos de la comunidad AyudaExcel,

Tengo el siguiente problema: "Quiero que al abrir varios libros de Excel haya un evento que recorra todas las hojas de cada libro y las aplique un formato estándar para todas igual."

Para ello he desarrollado la siguiente macro, pero me da problemas:

Private Sub Workbook_Open()

Application.ScreenUpdating = False

   Dim libro As Workbook
   Dim hoja As Worksheet

   For Each libro In Workbooks
      Set libro = ActiveWorkbook.Name

      For Each hoja In Worksheets
         Set hoja = ActiveWorksheet.Name
         With Sheets(hoja).Select
            With Cells
               ' Tamaño de las celdas...
               .ColumnWidth = 10
               .RowHeight = 15
               ' Alineación de las celdas...
               .HorizontalAlignment = xlCenter
               .VerticalAlignment = xlCenter
               ' Fuente de las celdas...
               .Font.Name = "Calibri"
               .Font.Size = 10
            End With
         End With
      Next hoja

   Next libro

   MsgBox "La hoja de datos " & hoja.Name & " del libro " & libro.Name & " ha sido formateada correctamente."
End Sub

Al parecer las variables "libro" y "hoja" están declaradas como un objeto (obvio... porque de lo contrario, no funcionarían), pero al aplicar el método ActiveWorksheet.Name no me reconoce el tipo de dato porque pasa a ser de tipo String.

imagen.thumb.jpg.bf2eccfc46bb468aea982bcfe8cbb843.jpg

No sé cómo solucionar este problema...

Utilizo la versión de Excel 2019.

Gracias.

 

publicado

saludos @paikerr, simplemente elimina las lineas

Set libro = ActiveWorkbook.Name
Set hoja = ActiveWorksheet.Name

NO es necesario pues libro y hoja ya hacen referencia a cada uno de los objetos

y cambia esta

For Each hoja In Worksheets

por esta otra


For Each hoja In libro.Worksheets

publicado

Solo añadir que estás confundiendo el objeto con el nombre del objeto

Además, no es necesario seleccionar la hoja cada vez

Dim Hoja As Worksheet
Dim Libro As Workbook
For Each Libro in Workbooks
	For Each Hoja in Libro.Sheets
		With Hoja.Cells

		   ...

		   ...

   End With
Next

 

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.