Activar libro usando VBA en Excel ~ Libro.Activar

El método Activate de la clase Workbook se utiliza para poner encima el libro de trabajo seleccionado. Aquí mostraré diferentes formas de especificar qué libro de trabajo quieres activar.

Por ejemplo, la macro en el libro de Excel añade un nuevo libro que aparece automáticamente en la parte superior. Para que el libro Excel que contiene la macro aparezca de nuevo en la parte superior, refiérase a él como ThisWorkbook y llama al método Activate:


Dim wb As Workbook: Set wb = Workbooks.Add
ThisWorkbook.Activate	
En la documentación, la redacción es más exacta, aunque un tanto misteriosa Activa la primera ventana asociada al libro de trabajo se utiliza. Para entender esto debemos ser conscientes de que un mismo libro de trabajo puede estar abierto en varias ventanas, lo que permite trabajar en diferentes lugares del libro de trabajo (hojas, rangos) al mismo tiempo.
Visualización del mismo libro en varias ventanas

Activar libro de trabajo por nombre de archivo

Si conoce el nombre del archivo, puede utilizarlo para identificar el libro de trabajo que debe anteponerse.


Workbooks("Demo.xlsm").Activate

Activar libro de trabajo con nombre variable

El uso de un nombre de variable en lugar de la cadena literal hace que su código sea más flexible. Además, tener una variable Workbook wb le permite realizar más de una acción en el libro de trabajo seleccionado.


Dim strWorkbook As String: strWorkbook = "Demo.xlsm"
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
wb.Activate	

Activar el libro de trabajo con la ruta completa

Como la imagen de arriba muestra los libros de trabajo para ser identificado por el nombre de archivo con extensión - excluyendo ruta. Código para obtener seleccionar el libro de trabajo para activar entonces viene en dos pasos:

  1. Determine el nombre de archivo para identificar el libro de trabajo;
  2. Aplique el Activate método.

El siguiente código utiliza la función FileName que toma la parte requerida del nombre completo incluyendo la ruta en el disco.


Dim strFile As String: strFile = "C:\temp\test.xlsm"
Dim strFileName As String
strFileName = FileName(File:=strFile)
Workbooks(strFileName).Activate


Public Function FileName(File As String) As String
    '?FileName("c:\a\b\c.txt") -> c.txt
    FileName = Right(File, Len(File) - InStrRev(File, "\"))
End Function

Activar libro de trabajo con comodín

A veces, se sabe que el nombre del archivo sigue un patrón determinado, pero contiene una parte verificable, por ejemplo, un número de semana. La identificación en las colecciones debe ser exacta, no se pueden utilizar comodines directamente.


Dim wb As Workbook
For Each wb In Workbooks	
	If wb.Name Like "Dem*.xlsm" Then
		wb.Activate
		Exit For
	End If
Next

Activar libro y hoja

Para activar tanto un libro de trabajo como una hoja en él, básicamente puedes hacer una cosa y la otra.


Dim wb As Workbook
Set wb = Workbooks(Index:="data123.xlsx")
wb.Activate
Dim ws As Worksheet
Set ws = wb.Sheets(Index:="Countries")
ws.Activate

O quizás un poco más bonito mostrando que la hoja pertenece al libro de trabajo utilizando la estructura With:


Dim wb As Workbook
Set wb = Workbooks(Index:="data123.xlsx")
With wb
	.Activate
	.Sheets(Index:="Countries").Activate
End With

Autor: Mark Uildriks
Referencia: Workbook.Activate() | Microsoft Learn
icono

Pruebe el complemento del editor Code VBA