Necesita una macro de Word que guarde su documento automáticamente con un nombre de archivo que siga un patrón específico como ProjectName_Date_Version.docx. La función de Autorrecuperación integrada en Word no permite nombres de archivo personalizados y guarda solo en una ubicación fija. Este artículo explica cómo escribir una macro de VBA que cree un nombre de archivo personalizado a partir del contenido del documento, la fecha actual y un número de versión. Aprenderá la estructura del código, cómo instalarlo y cómo activarlo al guardar o con un temporizador.
Puntos clave: Creación de una macro de autoguardado personalizada en VBA de Word
- Alt+F11 (Editor de VBA): Abra el editor para insertar y editar el código de la macro.
- Archivo > Opciones > Personalizar cinta de opciones > Desarrollador: Habilite la pestaña Desarrollador para acceder a las herramientas de macros.
- Document.BuiltInDocumentProperties: Utilice este objeto para extraer el título o el asunto de las propiedades del documento e incluirlos en el nombre del archivo.
- Format(Date, “yyyymmdd”): Genere una cadena de fecha en un formato consistente para el nombre del archivo.
- Application.OnTime: Programe la macro para que se ejecute en un temporizador repetitivo para guardados automáticos.
Cómo funciona la macro de autoguardado y qué necesita
La macro utiliza VBA (Visual Basic for Applications) de Word para construir un nombre de archivo a partir de partes dinámicas y luego guardar el documento en una carpeta elegida. La lógica principal lee las propiedades integradas del documento actual, como Título o Asunto, agrega la fecha actual mediante la función Format y, opcionalmente, incrementa un número de versión almacenado en una propiedad personalizada del documento o en un archivo de texto aparte.
Antes de escribir la macro, debe habilitar la pestaña Desarrollador en Word. Vaya a Archivo > Opciones > Personalizar cinta de opciones, marque la casilla Desarrollador en el panel derecho y haga clic en Aceptar. Esta pestaña le da acceso al editor de VBA, la grabación de macros y los controles de formulario.
Requisitos previos para la macro
La macro se basa en los siguientes elementos:
- Propiedades del documento: Establezca un Título o Asunto en Archivo > Información > Propiedades > Propiedades avanzadas. La macro los lee para construir el nombre del archivo.
- Una carpeta de guardado: Elija una ruta de carpeta donde la macro guardará los archivos. Use una ruta fija como “C:\MyAutoSaves” o un recurso compartido de red.
- Seguridad de macros: Configure la seguridad de macros para permitir macros firmadas o de confianza. Vaya a Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros y seleccione “Habilitar todas las macros” solo para pruebas.
Pasos para escribir e instalar la macro de autoguardado
Los siguientes pasos crean una macro que construye un nombre de archivo a partir del título del documento, la fecha actual y un número de versión. La macro guarda el documento en una carpeta que usted especifique.
- Abrir el Editor de VBA
Presione Alt+F11 para abrir el editor de VBA. En el panel Explorador de proyectos, expanda Normal > Módulos. Haga clic con el botón derecho en Módulos y elija Insertar > Módulo. Aparece una ventana de código en blanco. - Escribir la subrutina principal de autoguardado
Pegue el siguiente código en la ventana del módulo:Sub AutoSaveCustom()
Dim doc As Document
Set doc = ActiveDocumentDim baseName As String
baseName = doc.BuiltInDocumentProperties(wdPropertyTitle)
If baseName = "" Then baseName = "Untitled"Dim dateStr As String
dateStr = Format(Date, "yyyymmdd")Dim versionNum As Long
versionNum = GetNextVersionNumberDim folderPath As String
folderPath = "C:\MyAutoSaves\"Dim fullName As String
fullName = folderPath & baseName & "_" & dateStr & "_v" & versionNum & ".docx"Application.DisplayAlerts = False
doc.SaveAs2 FileName:=fullName, FileFormat:=wdFormatXMLDocument
Application.DisplayAlerts = True
End Sub - Agregar una función auxiliar para los números de versión
Debajo de la subrutina, pegue esta función para leer e incrementar un contador de versión almacenado en una propiedad personalizada del documento:Function GetNextVersionNumber() As Long
Dim cp As DocumentProperty
On Error Resume Next
Set cp = ActiveDocument.CustomDocumentProperties("Version"))
If Err.Number <> 0 Then
ActiveDocument.CustomDocumentProperties.Add Name:="Version", _
LinkToContent:=False, Type:=msoPropertyTypeNumber, Value:=1
GetNextVersionNumber = 1
Else
GetNextVersionNumber = cp.Value + 1
cp.Value = GetNextVersionNumber
End If
On Error GoTo 0
End Function
Nota: La propiedad personalizada “Version” se crea en el primer uso. Cada guardado la incrementa en uno. - Ejecutar la macro manualmente para probar
Cierre el editor de VBA. Presione Alt+F8, seleccione AutoSaveCustom y haga clic en Ejecutar. El documento se guarda en la carpeta que especificó. Verifique que el nombre del archivo coincida con el patrón, por ejemplo “Report_20250321_v3.docx”. - Configurar la macro para que se ejecute automáticamente al guardar
Para activar la macro cada vez que presione Ctrl+S, cambie el nombre de la subrutina a Document_Save. Sin embargo, un método más sencillo es asignar la macro a un atajo de teclado. Vaya a Archivo > Opciones > Personalizar cinta de opciones > Personalizar (junto a Atajos de teclado). En la lista Categorías, seleccione Macros. En la lista Comandos, seleccione AutoSaveCustom. Presione una nueva tecla de atajo como Ctrl+Shift+S y haga clic en Asignar. - Programar la macro con un temporizador para guardados automáticos
Agregue esta subrutina al mismo módulo para ejecutar AutoSaveCustom cada 5 minutos:Sub StartAutoSaveTimer()
Application.OnTime When:=Now + TimeValue("00:05:00"), _
Name:="AutoSaveCustom"
End Sub
Ejecute StartAutoSaveTimer una vez. La macro se ejecuta después de 5 minutos y luego se detiene. Para que se repita, agregue una llamada a StartAutoSaveTimer al final de AutoSaveCustom.
Errores comunes y ajustes
La macro no se ejecuta debido a la configuración de seguridad
Si la macro no se ejecuta, verifique la seguridad de macros. Vaya a Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros. Seleccione “Habilitar todas las macros” para pruebas. Para producción, firme digitalmente la macro o guárdela en una ubicación de confianza.
El nombre de archivo contiene caracteres no válidos del título del documento
Los títulos de los documentos pueden incluir caracteres que Windows no permite en los nombres de archivo, como / : ? ” < > |. Agregue una función de saneamiento que reemplace estos caracteres por un guion bajo. Inserte esta función en el módulo y llámela antes de construir el nombre del archivo:
Function SanitizeFilename(ByVal text As String) As String
Dim illegalChars As String
illegalChars = "\/:?""<>|"
Dim i As Integer
For i = 1 To Len(illegalChars)
text = Replace(text, Mid(illegalChars, i, 1), "_")
Next i
SanitizeFilename = text
End Function
El número de versión se restablece después de cerrar el documento
La propiedad personalizada del documento “Version” se almacena dentro del documento. Cuando cierra y vuelve a abrir el documento, la propiedad persiste. Si inicia un documento nuevo, el contador de versión comienza en 1. Para mantener una versión global entre documentos, almacene el contador en un archivo de texto en el disco y léalo con FileSystemObject de VBA.
Autoguardado de VBA vs. Autorrecuperación integrada
| Elemento | Macro de autoguardado de VBA | Autorrecuperación integrada |
|---|---|---|
| Control del nombre de archivo | Patrón totalmente personalizado | Nombres fijos (Copia de seguridad de…) |
| Ubicación de guardado | Cualquier carpeta que especifique | Carpeta fija de Autorrecuperación |
| Numeración de versiones | Incremento automático | No disponible |
| Programación | Temporizador o atajo manual | Intervalo fijo (1-120 minutos) |
| Recuperación tras un bloqueo | Reapertura manual del último guardado | Aviso automático al reiniciar |
La macro de VBA le brinda control total sobre el patrón del nombre de archivo y la ubicación de guardado. La Autorrecuperación integrada es más sencilla y recupera el trabajo no guardado después de un bloqueo. Para máxima seguridad, use ambas: mantenga la Autorrecuperación habilitada para la recuperación de bloqueos y ejecute la macro de VBA para copias de seguridad versionadas.
Ahora puede crear una macro de VBA de Word que guarde su documento con un patrón de nombre de archivo personalizado utilizando el título del documento, la fecha y el número de versión. Comience probando la macro en un documento de ejemplo con una ruta de carpeta simple. Después de verificar el resultado, asigne la macro a un atajo de teclado o a un temporizador para automatizar su flujo de trabajo de copias de seguridad. Para escenarios avanzados, amplíe la macro para guardar en una unidad de red o agregue una marca de tiempo al nombre del archivo.