VBA – Ejecutar una macro al iniciar Excel
In this Article
¿Necesita ejecutar una macro cuando se inicia Excel? Tiene dos opciones:
1. Crear un Sub (procedimiento) Workbook_Open() dentro de ‘ThisWorkbook’.
2. Colocar un Sub Auto_Open() dentro de cualquier módulo.
Evento Workbook_Open
Cree un Sub titulado ‘Workbook_Open’ dentro de ‘ThisWorkbook’
Sub Workbook_Open()
MsgBox "¡Este código se ejecutó al inicio de Excel!"
End Sub
Auto_Open
Usando el segundo método: Simplemente crea una subrutina llamada Auto_Open y coloca el código en ella, o llama a otra subrutina desde allí. Automáticamente su código se ejecuta cuando Excel se inicia.
Private Sub Auto_Open()
MsgBox "¡Este código se ejecuta al iniciar Excel!"
End Sub
Crear y Nombrar una nueva Hoja de Trabajo cada vez que se abre Excel
El siguiente código funciona abriendo un libro de trabajo. Añade automáticamente una nueva hoja y la etiqueta con la fecha. También comprueba que la hoja no exista ya – para permitir la posibilidad de que se abra más de una vez al día.
Este código hace uso del evento Workbook Open y debe colocarse en el módulo del libro de trabajo bajo el evento «Open work Book». La función ‘Existe_Hoja’ debe ser colocada en un módulo y esto comprueba si la hoja existe o no:
Private Sub Workbook_Open()
Dim NombreNuevaHoja As String
NombreNuevaHoja = Format(Now(), "dd-mm-yy")
If Existe_Hoja(NombreNuevaHoja) = False Then
With ThisWorkbook
Worksheets.Add().Name = NombreNuevaHoja
End With
End If
Save
End Sub
Function Existe_Hoja(NombreHoja As String) As Boolean
Dim hoja As Worksheet
Existe_Hoja = False
For Each hoja In ThisWorkbook.Worksheets
If hoja.Name = NombreHoja Then
Existe_Hoja = True
End If
Next
End Function
Para descargar el archivo .XLSM de este tutorial, haga clic aquí
Establecer la hoja por defecto cuando se abre el libro de trabajo
¿Quieres asegurarte de que una hoja se muestre siempre en primer lugar cuando se abre un libro de trabajo? Por ejemplo, cuando abres un libro de trabajo, la hoja 3 es siempre la hoja activa. A continuación le explicamos cómo hacerlo.
Puedes referirte a una hoja desde VBA por su nombre de programa (por ejemplo, Hoja3) o por su nombre de pestaña (por ejemplo, JanData). Es mejor utilizar el nombre del programa, porque si el nombre de la pestaña cambia, su código VBA que se refiere a un nombre de pestaña ya no funcionará. Sin embargo, si utiliza el nombre del programa, un usuario puede cambiar el nombre de la pestaña varias veces y su macro sigue funcionando.
Para asegurarse de que una determinada hoja se activa siempre cuando se abre un libro de trabajo, simplemente coloque el código sheet.activate en el sub workbook_open.
Este es un ejemplo que activa la hoja3 utilizando el nombre del programa cada vez que se abre un libro de trabajo.
Private Sub Workbook_Open()
Hoja3.Activate
End Sub
Y esto lo hace utilizando el nombre de la pestaña:
Private Sub Workbook_Open()
Sheets("nombreDeHoja").Activate
End Sub
Nota: Debe guardar y reiniciar Excel para que esto funcione.
Nota: Esto sólo funciona si las macros están activadas.
Nota: Ponga este código en la ventana de código para el objeto ThisWorkbook en el VBE.
Cargar un formulario cada vez que se abre el libro de trabajo
Si desea cargar un formulario o ejecutar algún código VBA cuando abra un libro de trabajo de Excel, coloque su código en la ventana de código de Thisworkbook y en el sub objeto Workbook_Open.
Desde su hoja de cálculo:
1. Pulsa ALT y F11 para abrir el editor VB
2. Haga doble clic en la palabra ThisWorkbook para abrir la ventana de código
3. Escriba el siguiente código en la ventana de código de ThisWorkbook
Private Sub Workbook_Open()
formulario1.Show
End Sub
Nota: Reemplace Userform1 con el nombre de su formulario
4. Cierre Excel y vuelva a abrirlo.