Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
ThisWorkbook Macros

ThisWorkbook VBA

| Sin comentarios

El ThisWorkbook en VBA tiene como propósito controlar los eventos que ocurren en el libro de Excel, si se requiere que se ejecute una macro al ocurrirle algo al libro, la invocación a esta macro, o la macro en sí, debe encontrarse en ThisWorkbook. 

En el explorador de proyectos, ThisWorkbook se encuentra dentro del grupo "Microsoft Excel Objetos".

ThisWorkbook VBA

Eventos en ThisWorkbook 

Si aún no conoces el propósito de los eventos, puedes revisar: Eventos en VBA

La siguiente es la lista de eventos VBA (Excel), que pueden ser controlados por medio de ThisWorkbok:

Activate: Se ha activado un libro de trabajo

Addininstall: Se ha instalado un libro de trabajo como complemento.

BeforeClose: Esta por cerrarse un libro de trabajo.

BeforePrint: Está por de imprimirse un libro de trabajo (si existe algo en él).

BeforeSave: Está por guardarse un libro de trabajo.

Deactivate: Cuando se ha desactivado un libro de trabajo.

NewSheet: Cuando se ha creado una hoja nueva.

Open: Se ha abierto un libro de trabajo.

SheetActivate: Se ha activado cualquier hoja.

 

Todas la macros correspondientes a estos eventos deben encontrarse dentro de ThisWorkbook, de lo contrario no funcionarán.

Descargar archivo con todos los ejemplos mostrados a continuación: Ejemplos ThisWorkbook VBA

 

Evento Abrir Libro Excel 

Este evento ocurre cuando se abre el libro de trabajo (o un complemento), en ese momento se ejecuta el procedimiento Workbook_0pen.

Éste evento se usa a menudo para; desplegar mensajes de bienvenida,  abrir otros libros de trabajo, configurar menús o barras de herramientas personalizados, mostrar un formulario, etc. 

Ejemplo evento Open VBA

Usa la función Weekday en VBA para determinar el día de la semana. Si es viernes, aparece un cuadro de mensaje para recordar al usuario que debe realizar una copia de seguridad,  si no es viernes, no ocurre nada.

Private Sub Workbook_Open()

If Weekday(Now) = 6 Then

mensaje= "Hoy es viernes. Debemos realizar el respaldo"

MsgBox mensaje

End if

End Sub

Recuerde que para el código de este evento pueda funcionar debe encontrarse en el objeto ThisWorkbook. 

 

Evento Activate

Siempre que se activa un libro de trabajo se ejecuta el siguiente procedimiento(debes tener al menos dos archivos abiertos para que puedas probar este evento). Este simplemente maximiza la ventana activa.

Private Sub Workbook_Activate()

ActiveWindow.WindowState = xlMaximized

End Sub

ThisWorkbook tiene como propósito controlar los eventos de un libro, por lo que si necesita otras macros, no las coloque en este objeto sino en un módulo. 

Evento Sheetactivate 

El siguiente procedimiento se ejecuta cuando se activa cualquier hoja del libro de trabajo. El código simplemente selecciona la celda B2. Al escribir On Error Resume Next se provoca que el procedimiento ignore el error que se produce si la hoja activada es una Hoja de gráfico.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

On Error Resume Next

Range( "B2").Select

End Sub

En caso quiere conocer mas de on error puede revisar: On error en VBA

Tomando en cuenta que existen varios tipos de hojas en Excel, podemos usar de forma alternativa:  

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If TypeName(Sh) = "Worksheet" Then Range("B2").Select

End Sub

 

Evento Newsheet 

El siguiente procedimiento se ejecuta siempre que se añade una hoja nueva al libro de trabajo. Dado que existen varios tipos de hojas en Excel, en esta macro se determina el tipo de hoja para que se pueda ejecutar

Private Sub Workbook_NewSheet(ByVal Sh As Object)

If TypeName(Sh) = "Worksheet" Then

Range("B2") = "Hoja añadida el " & Now()

End If

End Sub

Este evento en ThisWorkbook se suele usar en combinación con una hoja plantilla, de forma que el contenido de la plantilla es copiado a una nueva hoja en cuanto es creada.

 

Evento Beforesave

El evento BeforeSave se produce antes de que se guarde el archivo, cuando no se ha grabado previamente el archivo, o cuando se utiliza "Guardar como".

Private Sub Workbook_BeforeSave(ByVal guardar As Boolean, Cancel As Boolean)

If guardar Then

MsgBox "Aparece al Guardar como..."

End If

End Sub

 

Evento Beforeprint 

Este evento ocurre cuando el usuario genera una impresión o una vista preliminar de la misma (antes de que se produzca la impresión o la vista preliminar) 

En el siguiente ejemplo se incluye la ruta completa del archivo  en el pie de página antes de que se produzca la impresión. 

Private Sub Workbook_BeforePrint(Cancel As Boolean)

For Each sht In ThisWorkbook.Sheets

sht.PageSetup.LeftFooter = "&8" & ThisWorkbook.FullName

Next sht

End Sub

 

Evento Beforeclose

El evento BeforeClose se produce antes de cerrar un archivo o libro de trabajo. Este evento a menudo se usa para "limpiar" o restablecer configuraciones, antes de que se cierre el libro.

Tenga en cuenta que si se intenta cerrar un libro de trabajo que no ha sido guardado, Excel presenta un mensaje en el que pregunta si se quiere guardar el libro antes de cerrarlo. Cuando aparece este mensaje, Workbook_BeforeClose ya ha ejecutado su acción.

El siguiente ejemplo permite borrar el contenido de toda la Hoja1 antes de que se cierre el archivo, para lograrlo será necesario "Aceptar" el grabado del archivo al cerrar. 

Private Sub Workbook_BeforeClose(Cancel As Boolean)

   Sheets("Hoja1").Select

   Cells.Select

   Selection.ClearContents

End Sub

Use este evento en ThisWorkbook con cuidado, ya que no podrá tener claridad sobre el efecto o resultado de la macro, pues el archivo estará cerrado y no podrá observar el resultado hasta volver a abrir el archivo. 

Deja una respuesta

Los campos requeridos estan marcados con *.