VBA Abrir / Cerrar Libro de Trabajo
In this Article
En este tutorial, usted aprenderá cómo utilizar VBA para abrir y cerrar el libro de Excel de varias maneras. VBA le permite abrir o cerrar archivos utilizando los métodos estándar abrir y cerrar. Si quieres aprender a comprobar si un archivo existe antes de intentar abrirlo, puedes hacer clic en este enlace: VBA File Exists
Abrir un libro de trabajo en VBA
Abrir un libro de trabajo desde la ruta
Si sabes qué archivo quieres abrir, puedes especificar su nombre completo en la función. Aquí está el código:
Workbooks.Open "C:\Carpeta VBA\Ejemplo archivo 1.xlsx"
Esta línea de código abre el archivo «Ejemplo archivo 1» de la «Carpeta VBA».
Abrir Libro de Trabajo – ActiveWorkbook
Cuando se abre un libro de trabajo, éste se convierte automáticamente en el ActiveWorkbook. Puede hacer referencia al libro de trabajo recién abierto de esta manera:
ActiveWorkbook.Save
Cuando hace referencia a una hoja o rango y omite el nombre del libro de trabajo, VBA asumirá que se está refiriendo al ActiveWorkbook:
Sheets("Hoja1").Name = "Entrada"
Abrir el libro de trabajo y asignarlo a una variable
También puede abrir un libro de trabajo y asignarlo directamente a una variable objeto. Este procedimiento abrirá un libro de trabajo a la variable wb y luego guardará el libro de trabajo.
Sub AbrirArchivoAsignarAVariable()
Dim libro As Workbook
Set libro = Workbooks.Open("C:\Carpeta VBA\Libro1.xlsm")
libro.Save
End Sub
Asignar los libros de trabajo a las variables cuando se abren es la mejor manera de hacer un seguimiento de sus libros de trabajo
Cuadro de Diálogo de Abrir Archivo del Libro de Trabajo
También puede activar el cuadro de diálogo Abrir archivo del libro de trabajo. Esto permite al usuario navegar hasta un archivo y abrirlo:
Sub AbrirLibro()
Dim Archivo As String
Archivo = Application.GetOpenFilename()
Workbooks.Open (Archivo)
End Sub
Como puede ver en la Imagen 1, con este enfoque los usuarios pueden elegir qué archivo abrir. El cuadro de diálogo Abrir archivo puede personalizarse en gran medida. Puede seleccionar por defecto una carpeta determinada, elegir qué tipos de archivos son visibles (por ejemplo, sólo .xlsx), y mucho más. Lea nuestro tutorial sobre el Cuadro de Diálogo Abrir Archivo para ver ejemplos detallados.
Abrir un nuevo libro de trabajo
Esta línea de código abrirá un nuevo libro de trabajo:
Workbooks.Add
Abrir Nuevo Libro de Trabajo a la Variable
Este procedimiento abrirá un nuevo libro de trabajo, asignándolo a la variable wb:
Sub AbrirNuevoLibro()
Dim libro As Workbook
Set libro = Workbooks.Add
End Sub
Sintaxis de Abrir Libro de Trabajo
Cuando se utiliza Workbooks.Open se puede notar que hay muchas opciones disponibles al abrir el libro de trabajo:
El nombre del archivo es obligatorio. Todos los demás argumentos son opcionales – y probablemente no necesitará conocer la mayoría de los otros argumentos. Aquí están los dos más comunes:
Abrir libro de trabajo de sólo lectura
Cuando el libro de trabajo se abre de sólo lectura, no se puede guardar sobre el archivo original. Esto evita que el archivo sea editado por el usuario.
Workbooks.Open "C:\Carpeta VBA\Libro1.xlsm", , True
Abrir un libro de trabajo protegido por contraseña
Un libro de trabajo puede estar protegido por contraseña. Utilice este código para abrir el libro de trabajo protegido por contraseña:
Workbooks.Open "C:\Carpeta VBA\Libro1.xlsm", , , "password"
Notas sobre la sintaxis de abrir el libro de trabajo
Observe que en la imagen anterior, hemos incluido un paréntesis «(» para mostrar la sintaxis. Si utiliza el paréntesis cuando trabaja con Workbooks.Open, debe asignar el libro de trabajo a una variable:
Sub abrirLibro()
Dim abrirLibro As Workbook
Set abrirLibro = Workbooks.Open("C:\Carpeta VBA\Libro1.xlsm", True, True)
End Sub
Cerrar un Libro de Trabajo en VBA
Cerrar un libro de trabajo específico
De manera similar a la apertura de un libro de trabajo, hay varias maneras de cerrar un archivo. Si sabes qué archivo quieres cerrar, puedes utilizar el siguiente código:
Workbooks.Close ("C:\Carpeta VBA\Libro1.xlsm")
Esta línea de código cierra el archivo «Archivo de muestra 1» si está abierto. Si no es así, devolverá un error, por lo que debe ocuparse del manejo de errores.
Cerrar el Libro de Trabajo Activo
Si quieres cerrar el Libro de Trabajo que está actualmente activo, esta línea de código te permitirá hacerlo:
ActiveWorkbook.Close
Cerrar Todos los Libros de Trabajo Abiertos
Para cerrar todos los Libros de Trabajo abiertos, puede simplemente utilizar este código:
Workbooks.Close
Cerrar el Primer Libro de Trabajo Abierto
Esto cerrará el primer libro de trabajo abierto/creado:
Workbooks(1).Close
Reemplace 1 por 2 para cerrar el segundo libro de trabajo abierto/creado y así sucesivamente.
Cerrar sin guardar
Esto cerrará un Libro de Trabajo sin guardar y sin mostrar el prompt de guardar:
ActiveWorkbook.Close savechanges:=False
Guardar y cerrar sin preguntar
De manera similar, esto guardará y cerrará un Libro de Trabajo sin mostrar el aviso de guardado:
ActiveWorkbook.Close savechanges:=True
Nota: Hay otras formas de indicar si se guarda o no un Libro de Trabajo y también si se muestran avisos o no. Esto se discute con más detalle aquí.
Otros ejemplos de apertura de libros de trabajo
Abrir Múltiples Libros de Trabajo Nuevos
Este procedimiento abrirá múltiples libros de trabajo nuevos, asignando los nuevos libros de trabajo a un array:
Sub AbrirMultiplesLibrosNuevos()
Dim matrizLibros(3) As Workbook
Dim i As Integer
For i = 1 To 3
Set matrizLibros(i) = Workbooks.Add
Next i
End Sub
Abrir Todos los Libros de Excel en una Carpeta
Este procedimiento abrirá todos los libros de trabajo de Excel en una carpeta, utilizando el selector de diálogo de abrir archivo.
Sub AbrirTodosLosArchivosEnUnaCarpeta()
Dim libro As Workbook
Dim dlgFD As FileDialog
Dim carpeta As String
Dim nombreArchivo As String
Set dlgFD = Application.FileDialog(msoFileDialogFolderPicker)
If dlgFD.Show = -1 Then
carpeta = dlgFD.SelectedItems(1) & Application.PathSeparator
nombreArchivo = Dir(carpeta & "*.xls*")
Do While nombreArchivo <> ""
Set libro = Workbooks.Open(carpeta & nombreArchivo)
nombreArchivo = Dir
Loop
End If
End Sub
Comprobar si un libro de trabajo está abierto
Este procedimiento comprobará si un libro de trabajo está abierto :
Sub PruebaSiEstaAbiertoPorNombre()
Dim libro As Workbook
For Each libro In Workbooks
If libro.Name = "Nuevo Archivo de Excel Worksheet.xls" Then
MsgBox "Encontrado"
Exit Sub 'llamar al codigo adicional aqui. Por ahora, solo saldremos del For
End If
Next
End Sub
Evento Workbook_Open
Los eventos VBA son «disparadores» que le indican a VBA que ejecute cierto código. Puede configurar eventos de libro de trabajo para abrir, cerrar, antes de guardar, después de guardar y más. Lea nuestro tutorial sobre el evento Workbook_Open para aprender más sobre la ejecución automática de macros cuando se abre un libro de trabajo.