VBA – Trabajar con libros de trabajo (El objeto Workbook)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on marzo 14, 2022

Esta guía le introducirá a trabajar con el Objeto Workbook en VBA.

El Objeto Workbook

En primer lugar, con el fin de interactuar con los libros de trabajo en VBA, usted debe entender el Objeto Workbook. Con el objeto Workbook, usted puede hacer referencia a los libros de trabajo por su nombre así

Workbooks("Libro2.xlsm").Activate

Sin embargo, este código sólo funcionará si el libro de trabajo está abierto. Si el libro de trabajo está cerrado, tendrá que proporcionar la ruta completa del libro de trabajo:

Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm")

En lugar de escribir la ruta completa, si su libro de trabajo deseado está en el mismo directorio que el libro de trabajo donde se almacena su código, podría utilizar esta línea de código para abrir el libro de trabajo:

Workbooks.Open (ThisWorkbook.Path & "\book2.xlsm")

Esto hace uso del objeto ThisWorkbook que discutiremos en la siguiente sección.

Número de índice del libro de trabajo

Por último, puede hacer referencia a los libros de trabajo por su «Número de Índice». El número de índice de un libro de trabajo corresponde al orden en que se abrió el libro (técnicamente es la posición del libro de trabajo en la colección de libros de trabajo).

Workbooks(1).Activate

Esto es útil si quiere hacer algo como cerrar el primer (o último) libro de trabajo abierto.

Activar libro de trabajo, libro de trabajo activo y libro de trabajo actual

Si un libro de trabajo NO ESTÁ ACTIVO, puede acceder a los objetos del Libro de Trabajo así

Workbooks("Book2.xlsm").Sheets("Sheet1").Range("A1").value = 1

Sin embargo, si el libro de trabajo es Activo, puede omitir el objeto del libro de trabajo:

Sheets("Sheet1").Range("A1").value = 1

Y si quieres interactuar con la hoja activa del libro de trabajo, también puedes omitir el objeto hojas:

Range("A1").value = 1

Activar el libro de trabajo

Para activar un libro de trabajo, utilice el método Activate.

Workbooks("Libro2.xlsm").Activate

Ahora puedes interactuar con los objetos del Libro2 sin indicar explícitamente el nombre del libro de trabajo.

ActiveWorkbook

El objeto ActiveWorkbook siempre se refiere al libro de trabajo activo. Esto es útil si quiere asignar el ActiveWorkbook a una variable para utilizarlo más tarde.

Dim wb As Workbook
Set wb = ActiveWorkbook

ThisWorkbook

El objeto ThisWorkbook siempre se refiere al libro de trabajo donde se almacena el código en ejecución. Para activar ThisWorkbook, utilice esta línea de código:

ThisWorkbook.Activate

Abrir libro de trabajo

Para abrir un libro de trabajo, utilice el método Open:

Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm")

El libro de trabajo recién abierto se convertirá siempre en el ActiveWorkbook, permitiéndole interactuar fácilmente con él.

ActiveWorkbook.Save

El método Abrir tiene varios argumentos más, permitiéndole abrir de sólo lectura, abrir un libro de trabajo protegido por contraseña, y más. Está cubierto aquí en nuestro artículo sobre Abrir / Cerrar Libros de Trabajo.

Abrir y asignar a una variable

También puede abrir un libro de trabajo y asignarlo a una variable al mismo tiempo:

Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\StevePC2\Downloads\book2.xlsm")

Diálogo Abrir Archivo

También puede activar el cuadro de diálogo Abrir archivo de la siguiente manera:

Sub AbrirLibro()
    Dim strFile As String
    strFile = Application.GetOpenFilename()
    Workbooks.Open (strFile)
End Sub

Cuadro de dialogo abrir libro

 

Crear un nuevo libro de trabajo (añadir)

Esta línea de código creará un nuevo libro de trabajo:

Workbooks.Add

El nuevo libro de trabajo se convierte ahora en el ActiveWorkbook, permitiéndole interactuar con él (por ejemplo, guardar el nuevo libro de trabajo).

Añadir un nuevo libro de trabajo a una variable

También puede añadir un nuevo libro de trabajo directamente a una variable:

Dim wb As Workbook
Set wb = Workbooks.Add

Cerrar el libro de trabajo

Cerrar y guardar

Para cerrar un libro de trabajo con guardado, utilice la función Método de cierre con SaveChanges establecido en TRUE:

ActiveWorkbook.Close SaveChanges:=True

Cerrar sin guardar

Para cerrar sin guardar, establezca SaveChanges igual a FALSE:

ActiveWorkbook.Close SaveChanges:=False

Libro de trabajo Guardar Como

El método SaveAs se utiliza para guardar un libro de trabajo como. Para guardar un libro de trabajo con un nuevo nombre, en el mismo directorio, puede usar implícitamente esto:

ActiveWorkbook.SaveAs "nuevo"

donde «nuevo» es el nuevo nombre del archivo. Para guardar un libro de trabajo en un nuevo directorio con una extensión de archivo específica, simplemente especifique el nuevo directorio y el nombre del archivo:

ActiveWorkbook.SaveAs "C:\Users\StevePC2\Downloads\new.xlsm"

Otros ejemplos de VBA para libros de trabajo

Nombre del libro de trabajo

Para obtener el nombre de un libro de trabajo:

MsgBox ActiveWorkbook.Name

Proteger el libro de trabajo

Para proteger la estructura del libro de trabajo de la edición, puede utilizar el botón Método de protección (contraseña opcional):

Workbooks("book1.xlsm").Protect "contraseña"

Para desproteger un libro de trabajo utilice el método UnProtect:

Workbooks("book1.xlsm").Unprotect "contraseña"

Recorrer todos los libros de trabajo abiertos

Para recorrer todos los libros de trabajo abiertos:

Sub RecorrerLibros()
    
    Dim wb As Workbook
    
    For Each wb In Workbooks
        MsgBox wb.name
    Next wb

End Sub

Evento de Activación del libro de trabajo

Puede ejecutar algún código cada vez que se abra un libro de trabajo específico con el Evento Workbook Open Event. Coloque este procedimiento en el módulo ThisWorkbook de su libro de trabajo:

Private Sub Workbook_Open()
    Sheets("Hoja1").Activate
End Sub

Este procedimiento activará la Hoja1 cada vez que se abra el libro de trabajo.

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples