VBA Abrir / Cerrar Libro de Trabajo

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on agosto 22, 2022

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

Cuadro dialogo abrir archivo3

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:

Cuadro abrir 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.

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