Macro para manejo de Libros y Hojas


Como hemos visto, los objetos libro se definen como WorkBook; las clases como WorkBooks.

Ahora, los objetos hoja se llaman WorkSheet; y las clases WorkSheets. Las hojas activas se llaman ActiWorkSheet o simplemente ActiveSheet.

Según las versiones del Excel, cada vez que se crea un nuevo libro, se abre con una o tres hojas. Por ejemplo, la versión 2007 se abre con tres hojas; la versión 2016 se abre con una hoja.

Recuerde que, cada vez que se abre un nuevo libro, este se hace activo. Del mismo modo, cuando se añada una nueva hoja a un libro activo, la hoja nueva se insertará a la izquierda de la que era hoja activa y se convertirá en hoja activa.

Una mejor explicación que daremos será codificando este nuevo procedimiento y explicarlo paso a paso mediante líneas de comentario dentro del procedimiento que empieza con apóstrofe (') y se pinta de color verde en el procedimiento.

Abra su libro MisMacros02.xlsm. Si no tiene el archivo, descárguelo de la siguiente dirección:

Vaya al Editor e inserte nuevo módulo. Haciendo clic en su cambie su nombre por ModHojas. Luego digite el siguiente procedimiento o copie y pegue.

Luego guarde habilitado para macros antes de pasar a ejecutarlo.

En el procedimiento observe cómo hacemos uso de los procedimientos contenidos en otros módulos para abir o guardar libros.

He aqui el procedimiento completo.


Sub Hojas01()
Dim LibMac As Workbook
' Guardamos el nombre del libro donde están nuestras macros
Lib01 = ActiveWorkbook.Name
' Añadimos nuevo ibro
Workbooks.Add
' Guardamos su nombre
Lib02 = ActiveWorkbook.Name
' Número de hojas que tiene este archivo nuevo
MsgBox "Número de hojas: " & Worksheets.Count
' La hoja activa es:
MsgBox "Hoja activa: " & ActiveSheet.Name
' Todo nuevo libro es creado con una sola hoja
' Vamos a añadir una nueva hoja en el libro activo:
Worksheets.Add
MsgBox "Hoja activa: " & ActiveSheet.Name
' Como puede ver, inserta hoja nueva a la izquierda de la hoja activa
' Vamos a abrir el archivo ComercialCenter
MsgBox "Vamos a abrir el archivo ComercialCenter.xlsx"
ModArchivos.Abrir
' Veamos la hoja activa:
MsgBox "Hoja activa: " & ActiveSheet.Name
' Guardemos su nombre en WHoja
WHoja = ActiveSheet.Name
' Seleccionamos la hoja Cliente
Worksheets("Clientes").Activate
' Será cierto?
MsgBox "Hoja activa: " & ActiveSheet.Name
' Vamos a insertar nueva hoja
Worksheets.Add
' Una nueva hoja más
Worksheets.Add
' Cuántas hojas tiene ahora este libro?
MsgBox "Número de hojas: " & Worksheets.Count
' Vamos a seleccionar(hacerla activa) la última hoja
xHoja = Worksheets(Worksheets.Count).Select
' Veamos si es cierto
MsgBox "El nombre de la hoja es: " & ActiveSheet.Name
' Volvamos al libro de nuestras macros
Workbooks(Lib01).Activate
' Lo guardamos antes de ejecutar este procedimiento:
MsgBox "Ubique dónde se encuentra su libro MisMacros02.xlsm, seleccione y Guardar"
ModArchivos.GuardarConMacros
' Cerramos este libro

' Activamos el libro ComercialCenter
Workbooks("ComercialCenter.xlsx").Activate
' Lo cerramos sin guardar pues tiene hojas en blanco
ModArchivos.Cerrar
' Activamos el libro en blanco
Workbooks(Lib02).Activate
' Cerramos el libro que queda (que se hace activo)
ModArchivos.Cerrar
' Al final se queda abierto el libro de nuestras macros02

End Sub

Adjuntamos también las imágenes para ver cómo deben quedar en el editor:

Guarde su libro MisMacros02.xlsm. Verifique que no haya otro libro abierto y vuelva a ejecutarlo para entender bien el procedimiento.

En la siguiente sesión continuaremos con el uso de los objetos WOrkBook y WorkSheet

haga clic aquí