Diferencia entre ThisWorkbook y ActiveWorkbook

Cuando estás programando en VBA te llegas a encontrar en la disyuntiva de utilizar la palabra clave ThisWorkbook o de utilizar ActiveWorkbook para hacer referencia a los objetos de Excel. Las diferencias son sutiles pero importantes de mencionar.

Definición de ThisWorkbook

La palabra clave ThisWorkbook se refiere al libro de Excel que contiene el código VBA que estamos ejecutando, es decir, el libro que contiene la macro.

Definición de ActiveWorkbook

ActiveWorkbook es el libro de Excel que está activo al momento de ejecutarse cualquier instrucción.  Cuando se inicia la ejecución de una macro el ActiveWorkbook es el mismo que ThisWorkbook pero lo podemos cambiar con la siguiente instrucción:

Workbooks("Libro2.xlsx").Activate

Esta instrucción hará que el libro activo sea ahora el libro llamado Libro2.xlsx.

Ejemplo de ThisWorkbook y ActiveWorkbook

Para ilustrar mejor la diferencia entre ThisWorkbook y ActiveWorkbook haremos un ejemplo sencillo y para ello he creado dos libros llamados Libro1.xlsm y Libro2.xlsx. En el primero de los libros tengo la siguiente macro:

Diferencia entre ThisWorkbook y ActiveWorkbook en Excel

Observa el resultado mostrado en la ventana Inmediato: el primer valor devuelto por ActiveWorkbook.Name es el mismo que ThisWorkbook.Name. Sin embargo, después de la instrucción Workbooks(“Libro2.xlsx”).Activate las cosas cambian, y ahora el ActiveWorbook será el Libro2.xlsx mientras que ThisWorkbook seguirá siendo el Libro1.xlsm.

Ahora ya conoces la diferencia entre ambas palabras clave así que utiliza la que sea más apropiada en tu código VBA. Pon especial atención cuando tienes una macro que estará trabajando con múltiples libros a la vez.