VBA – Trabajar con libros de trabajo (El objeto Workbook)
In this Article
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
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.