Un libro de Excel que contiene macros debe guardarse como «Libro de Excel habilitado para macros», con extensión .xlsm; si se guarda como .xlsx, Excel elimina las macros. Además, con VBA se puede guardar el libro desde una macro, guardar una copia en otra carpeta o con la fecha en el nombre, y obtener la ruta en la que está guardado. ¿Cómo se hace cada cosa?
Cómo guardar un libro habilitado para macros.
Para guardar por primera vez un libro con macros, o convertir un .xlsx en uno que las conserve, los pasos son estos:
- Hacer clic en la pestaña «Archivo» y luego en «Guardar como», o presionar F12.
- Elegir la carpeta donde se guardará el archivo.
- En la lista «Tipo», seleccionar «Libro de Excel habilitado para macros (*.xlsm)».
- Escribir el nombre y hacer clic en «Guardar».
Si se intenta guardar como .xlsx un libro con macros, Excel advierte que las macros no se pueden guardar en ese formato. Si se acepta, el libro se guarda sin ellas. Las macros que se escriben en el «Libro de macros personal» se guardan en un archivo aparte que Excel abre en segundo plano, de modo que quedan disponibles en todos los libros.
Para guardar los cambios de un libro que ya existe basta con Ctrl + G en Excel en español (Ctrl + S en inglés), o con el ícono del disquete de la barra de acceso rápido.
Al abrir de nuevo el archivo, hay que habilitar el contenido para que las macros funcionen, como se explica en el artículo sobre cómo abrir el editor de VBA y un libro con macros.
- Guía de propiedad horizontal
- Liquidador de renta personas naturales
- Liquidador de intereses propiedad horizontal
Macro para guardar el libro.
Las macros se escriben en el editor de Visual Basic (Alt + F11), en «Insertar», «Módulo». Para guardar el libro que contiene la macro:
Sub GuardarLibro()
ThisWorkbook.Save
End Sub
ThisWorkbook es el libro donde está la macro, y Save lo guarda en su ubicación actual. Si se quiere guardar el libro que está activo, que puede ser otro, se usa ActiveWorkbook.Save. Esta instrucción es útil al final de una macro que procesa datos, para que los resultados no se pierdan, y puede asignarse a un botón.
Obtener la ruta del libro.
Tres propiedades devuelven la ubicación del libro:
| Propiedad | Devuelve |
|---|---|
| ThisWorkbook.Path | La carpeta: C:\Contabilidad |
| ThisWorkbook.Name | El nombre: Ventas 2026.xlsm |
| ThisWorkbook.FullName | La ruta completa: C:\Contabilidad\Ventas 2026.xlsm |
Por ejemplo, esta macro muestra la ruta en un mensaje:
Sub MostrarRuta()
MsgBox "La ruta del libro es " & ThisWorkbook.FullName
End Sub
Path está vacía si el libro nunca se ha guardado. Sin macros, la ruta también se obtiene con la fórmula =CELDA("nombrearchivo";A1), que devuelve la carpeta, el nombre del libro y el de la hoja.
Guardar como en otra carpeta.
Para guardar el libro con otro nombre o en otra carpeta se usa SaveAs, indicando la ruta completa y el formato. Esta macro toma la carpeta de la celda A1 y el nombre de la B1, crea la carpeta si no existe y guarda el libro como .xlsm:
Sub GuardarComoEnCarpeta()
Dim carpeta As String, nombre As String
carpeta = Trim(ActiveSheet.Range("A1").Value)
nombre = Trim(ActiveSheet.Range("B1").Value)
If Right(carpeta, 1) <> "\" Then carpeta = carpeta & "\"
If Dir(carpeta, vbDirectory) = "" Then MkDir carpeta
ThisWorkbook.SaveAs Filename:=carpeta & nombre & ".xlsm", FileFormat:=52
End Sub
FileFormat:=52 corresponde al libro habilitado para macros (.xlsm); para un .xlsx sin macros sería 51. Después de SaveAs, se sigue trabajando en el archivo nuevo.
Guardar una copia con la fecha.
Para guardar una copia de seguridad sin dejar de trabajar en el archivo original se usa SaveCopyAs. Con la fecha y la hora en el nombre, cada copia queda separada:
Sub GuardarCopiaConFecha()
ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\Copia " & Format(Now, "yyyy-mm-dd hh-mm") & ".xlsm"
End Sub
Los dos puntos no se admiten en los nombres de archivo, por eso la hora se escribe con guion.
Descargar las macros.
En este archivo puede descargar varias macros relacionadas con guardar libros en Excel.
Preguntas frecuentes.
A continuación respondemos las preguntas frecuentes de nuestros lectores.
¿Cómo guardo un libro habilitado para macros?
Con «Archivo», «Guardar como», eligiendo en «Tipo» la opción «Libro de Excel habilitado para macros (*.xlsm)».
¿Por qué se borraron mis macros al guardar?
Porque el libro se guardó como .xlsx, formato que no admite macros.
¿Cuál es el código VBA para guardar un libro?
ThisWorkbook.Save para el libro que contiene la macro, o ActiveWorkbook.Save para el libro activo.
¿Cómo obtengo la ruta del libro con una macro?
Con ThisWorkbook.Path para la carpeta o ThisWorkbook.FullName para la ruta completa.
¿Para qué sirve la opción «Guardar como»?
Para guardar el libro con otro nombre, en otra carpeta o en otro formato, como .xlsm, .xlsx o PDF.