Cómo crear una macro de VBA de Word para autoguardado con un patrón de nombre de archivo personalizado
🔍 WiseChecker

Cómo crear una macro de VBA de Word para autoguardado con un patrón de nombre de archivo personalizado

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.

ADVERTISEMENT

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.

  1. 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.
  2. 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 = ActiveDocument

    Dim 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 = GetNextVersionNumber

    Dim 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

  3. 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.
  4. 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”.
  5. 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.
  6. 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.

ADVERTISEMENT

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.

ADVERTISEMENT