En este tutorial, aprenderá a usar 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 .Abierto y .Cerrar.
Si desea aprender a verificar si existe un archivo antes de intentar abrirlo, puede hacer clic en este enlace: VBA File Exists
Abra un libro de trabajo en VBA
Abrir libro de trabajo desde la ruta
Si sabe qué archivo desea abrir, puede especificar su nombre de ruta completo en la función. Aquí está el código:
1 | Libros de trabajo. Abra "C: \ Carpeta VBA \ Archivo de muestra 1.xlsx" |
Esta línea del código abre el archivo "Archivo de muestra 1" de la "Carpeta VBA".
Abrir libro de trabajo - ActiveWorkbook
Cuando abre un libro, automáticamente se convierte en ActiveWorkbook. Puede hacer referencia al libro de trabajo recién abierto así:
1 | 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:
1 | Hojas ("Hoja1"). Nombre = "Entrada" |
Abrir libro de trabajo y asignar a una variable
También puede abrir un libro de trabajo y asignarlo directamente a una variable de objeto. Este procedimiento abrirá un libro de trabajo al wb variable y luego guarde el libro de trabajo.
123456 | Sub OpenWorkbookToVariable ()Dim wb como libro de trabajoEstablezca wb = Workbooks.Open ("C: \ Carpeta VBA \ Archivo de muestra 1.xlsx")wb.GuardarEnd Sub |
Asignar libros de trabajo a variables cuando se abren es la mejor manera de realizar un seguimiento de sus libros de trabajo
Cuadro de diálogo 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:
12345678 | Sub OpenWorkbook ()Dim strFile como cadenastrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)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 se puede personalizar en gran medida. Puede usar una carpeta determinada de forma predeterminada, elegir qué tipos de archivos están visibles (por ejemplo, solo xlsx) y más. Lea nuestro tutorial sobre el cuadro de diálogo Abrir archivo para obtener ejemplos detallados.
Abrir nuevo libro de trabajo
Esta línea de código abrirá un nuevo libro de trabajo:
1 | Cuadernos de trabajo Agregar |
Abrir nuevo libro de trabajo a variable
Este procedimiento abrirá un nuevo libro de trabajo, asignándolo a la variable wb:
1234 | Sub OpenNewWorkbook ()Dim wb como libro de trabajoEstablecer wb = Workbooks.AddEnd Sub |
Sintaxis del libro abierto
Cuando usa Workbooks.Open, es posible que observe que hay muchas opciones disponibles al abrir el libro:
El nombre de archivo es obligatorio. Todos los demás argumentos son opcionales y probablemente no necesitará conocer la mayoría de los demás argumentos. Estos son los dos más comunes:
Abrir libro de trabajo de solo lectura
Cuando el libro de trabajo se abre en modo de solo lectura, no se puede guardar sobre el archivo original. Esto evita que el usuario edite el archivo.
1 | Libros de trabajo. Abra "C: \ Carpeta VBA \ Archivo de muestra 1.xlsx", Verdadero |
Abrir libro protegido con contraseña
Un libro de trabajo puede estar protegido con contraseña. Utilice este código para abrir el libro de trabajo protegido con contraseña:
1 | Libros de trabajo. Abra "C: \ Carpeta VBA \ Archivo de muestra 1.xlsx",,, "contraseña" |
Notas de sintaxis de libro abierto
Observe que en la imagen de arriba, incluimos un paréntesis "(" para mostrar la sintaxis. Si usa paréntesis cuando trabaja con Workbooks.Open, debe asignar el libro de trabajo a una variable:
1234 | Sub OpenWB ()Dim wb como libro de trabajoEstablezca wb = Workbooks.Open ("C: \ Carpeta VBA \ Archivo de muestra 1.xlsx", Verdadero, Verdadero)End Sub |
Cerrar un libro de trabajo en VBA
Cerrar libro de trabajo específico
De forma similar a la apertura de un libro, existen varias formas de cerrar un archivo. Si sabe qué archivo desea cerrar, puede usar el siguiente código:
1 | Workbooks.Close ("C: \ Carpeta VBA \ Archivo de muestra 1.xlsx") |
Esta línea de código cierra el archivo "Archivo de muestra 1" si está abierto. De lo contrario, devolverá un error, por lo que debe encargarse del manejo de errores.
Cerrar el libro activo
Si desea cerrar el Libro de trabajo que está actualmente activo, esta línea de código le permitirá hacerlo:
1 | ActiveWorkbook.Close |
Cerrar todos los libros abiertos
Para cerrar todos los libros de trabajo abiertos, simplemente puede usar este código:
1 | Cuadernos de trabajo Cerrar |
Cerrar el primer libro abierto
Esto cerrará el primer libro de trabajo abierto / creado:
1 | Libros de trabajo (1) .Cerrar |
Reemplace 1 con 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 mensaje de guardar:
1 | ActiveWorkbook.Close savechanges: = Falso |
Guardar y cerrar sin preguntar
De manera similar, esto guardará y cerrará un libro de trabajo sin mostrar el mensaje de guardado:
1 | ActiveWorkbook.Close savechanges: = Verdadero |
Nota: Hay varias otras formas de indicar si guardar o no un libro de trabajo y también si mostrar mensajes o no. Esto se discute con más detalle aquí.
Otros ejemplos abiertos de libros de trabajo
Abrir varios libros de trabajo nuevos
Este procedimiento abrirá varios libros de trabajo nuevos y los asignará a una matriz:
12345678 | Sub OpenMultipleNewWorkbooks ()Dim arrWb (3) como libro de trabajoDim i como enteroPara i = 1 a 3Establecer arrWb (i) = Workbooks.AddSiguiente yoEnd Sub |
Abrir todos los libros de Excel en una carpeta
Este procedimiento abrirá todos los libros de Excel en una carpeta, utilizando el selector de diálogo Abrir archivo.
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder ()Dim wb como libro de trabajoDim dlgFD como FileDialogDim strFolder como cadenaDim strFileName como cadenaEstablecer dlgFD = Application.FileDialog (msoFileDialogFolderPicker)Si dlgFD.Show = -1 EntoncesstrFolder = dlgFD.SelectedItems (1) y Application.PathSeparatorstrFileName = Dir (strFolder & "* .xls *")Hacer mientras strFileName ""Establecer wb = Workbooks.Open (strFolder & strFileName)strFileName = DirCírculoTerminara siEnd Sub |
Compruebe si un libro de trabajo está abierto
Este procedimiento probará si un libro de trabajo está abierto:
1234567891011 | Sub TestByWorkbookName ()Dim wb como libro de trabajoPara cada wb en libros de trabajoSi wb.Name = "New Microsoft Excel Worksheet.xls" EntoncesMsgBox "Lo encontré"Salir del código de llamada de Sub aquí, saldremos por ahoraTerminara sipróximoEnd Sub |
Evento Workbook_Open
Los eventos de VBA son "disparadores" que le dicen 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 Workbook_Open Event para obtener más información sobre la ejecución automática de macros cuando se abre un libro.