VBA ActiveWorkbook frente a ThisWorkbook

Este tutorial discutirá la diferencia entre VBA ActiveWorkbook y ThisWorkbook.

ActiveWorkbook frente a ThisWorkbook

Es importante conocer la diferencia entre ActiveWorkbook y ThisWorkbook en VBA:

ActiveWorkbook es el libro de trabajo que está actualmente activo (similar a cómo ActiveSheet es la hoja actualmente activa). ThisWorkbook es el libro de trabajo donde se almacena el código VBA. Este libro de trabajo nunca cambiará.

Este libro de trabajo

Piense en ThisWorkbook como una variable de objeto que le permite hacer referencia al libro de trabajo que contiene el código que se está ejecutando actualmente.

Este código mostrará un cuadro de mensaje con el nombre de ThisWorkbook:

123 Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameEnd Sub

ActiveWorkbook

ActiveWorkbook es una variable de objeto que le permite hacer referencia al libro activo actualmente.

Este código mostrará un cuadro de mensaje con el nombre de ActiveWorkbook:

123 Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameEnd Sub

VBA asume ActiveWorkbook

Al intentar trabajar con objetos (p. Ej., Hojas) dentro del ActiveWorkbook, no es necesario que indique explícitamente el objeto ActiveWorkbook. VBA asumirá que se está refiriendo al ActiveWorkbook.

Así que esto:

1 ActiveWorkbook.Sheets ("Hoja1"). Rango ("$ A $ 5"). Valor = 1

Es lo mismo que esto:

1 Hojas ("Hoja1"). Rango ("$ A $ 5"). Valor = 1

Los libros de trabajo nuevos o abiertos están activos

Siempre que crea un nuevo libro de trabajo o abre un libro de trabajo, el libro de trabajo se vuelve "Activo". Puede ver por sí mismo con este código que agregará un libro de trabajo y recuperará el nombre del nuevo libro de trabajo:

1234 Sub Show_ActiveWorkbook_Add ()Cuadernos de trabajo AgregarMsgBox ActiveWorkbook.NameEnd Sub

Después de agregar o abrir un libro de trabajo, puede asignarlo a una variable utilizando el objeto ActiveWorkbook. Le mostraremos cómo en los ejemplos siguientes:

Ejemplos de ThisWorkbook y ActiveWorkbook

Cambiar libro activo

Cambie el libro de trabajo activo usando el nombre del libro de trabajo:

1 Libros de trabajo ("Libro1"). Activar

Cambie el libro de trabajo activo usando el número de orden de la hoja de trabajo (1 es la primera hoja de trabajo en un libro de trabajo)

1 Libros de trabajo (1) .Activar

Activar este libro de trabajo

Haga de ThisWorkbook (donde se almacena el código que se está ejecutando actualmente) el ActiveWorkbook:

1 ThisWorkbook.Activate

Establecer ActiveWorkbook en una variable

Asigne ActiveWorkbook a una variable de objeto de libro de trabajo:

12 Dim wb como libro de trabajoEstablecer wb = ActiveWorkbook

Cerrar y guardar el libro activo

Cierra y guarda el ActiveWorkbook:

1 ActiveWorkbook.Close SaveChanges: = Verdadero

Cerrar el libro de trabajo activo sin guardar

Cierra ActiveWorkbook sin guardar:

1 ActiveWorkbook.Close SaveChanges: = Falso

ActiveWorkbook - Guardar como

Realiza un Guardar como del libro de trabajo activo.

123456789 Sub SaveAsActiveWorkbook ()Resultado atenuado como varianteresultado = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Libro de Excel habilitado para macros (* .xlsm), * .xlsm, Libro de Excel (* .xlsx), * .xlsx")Si resultado = Falso, entonces regreseActiveWorkbook.SaveComo resultadoEnd Sub

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave