Desea que una macro VBA específica se ejecute en el momento en que abre un documento de Word. Esto ahorra tiempo al automatizar tareas repetitivas como aplicar formato, actualizar encabezados o refrescar campos de datos. Word proporciona dos desencadenadores de eventos integrados, el evento Document_Open y la macro AutoOpen, que ejecutan código automáticamente cuando se carga un documento. Este artículo explica cómo configurar cada método, dónde colocar el código y cómo evitar los bloqueos de seguridad comunes que impiden que se ejecuten las macros.
Puntos clave: Automatizar la ejecución de macros al abrir el documento
- Módulo ThisDocument en el editor de VBA: Contiene el evento Document_Open que se activa automáticamente cuando se abre el documento.
- Macro AutoOpen en un módulo estándar o en ThisDocument: Un método heredado que también ejecuta código cuando se carga el documento, pero solo en archivos .doc o .docm.
- Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros: Habilite todas las macros o firme digitalmente su macro para omitir el bloqueo de seguridad predeterminado.
Cómo activa Word las macros al abrir el documento
Word admite dos mecanismos distintos para ejecutar código automáticamente cuando se abre un documento. El primero es el evento Document_Open, que forma parte del módulo de clase ThisDocument. Este evento es el enfoque moderno y recomendado porque está explícitamente vinculado al objeto de documento y funciona de manera confiable en todos los formatos de documento habilitados para macros (.docm, .dotm).
El segundo mecanismo es la macro AutoOpen. Esta es una característica heredada de versiones anteriores de Word. Cuando Word abre un documento, busca en el proyecto una subrutina llamada AutoOpen y la ejecuta. La macro AutoOpen puede residir en un módulo estándar o en el módulo ThisDocument. Ambos métodos logran el mismo resultado, pero Document_Open le brinda más control y es menos probable que entre en conflicto con otros complementos.
Antes de escribir cualquier código, asegúrese de que su documento esté guardado como un archivo habilitado para macros. Use la extensión .docm para documentos y .dotm para plantillas. Si guarda como .docx, Word elimina todo el código VBA y la macro no se ejecutará. Además, debe ajustar la configuración de seguridad de macros de Word para permitir que se ejecuten las macros. De forma predeterminada, Word deshabilita todas las macros sin notificación. Debe habilitar todas las macros, lo cual es riesgoso, o firmar digitalmente su proyecto de macro con un certificado autofirmado o de confianza.
Pasos para agregar un evento Document_Open y ejecutar una macro automáticamente
El evento Document_Open es el método más confiable para activar código cuando se abre el documento. Siga estos pasos para agregar el controlador de eventos y su macro personalizada.
- Abra el editor de VBA
Presione Alt+F11 en Word. Se abre el editor de Visual Basic para Aplicaciones. En el panel Explorador de proyectos de la izquierda, localice el proyecto de su documento. Aparecerá como Normal (para la plantilla global), Project (Document1) o el nombre de su documento guardado. - Haga doble clic en ThisDocument
En el Explorador de proyectos, expanda la carpeta Objetos de Microsoft Word bajo el proyecto de su documento. Haga doble clic en la entrada ThisDocument. Se abre la ventana de código del módulo ThisDocument. - Seleccione el evento Document en la lista desplegable
En la parte superior de la ventana de código, haga clic en la lista desplegable izquierda y seleccione Document. La lista desplegable derecha muestra automáticamente (Declarations). Después de seleccionar Document, la lista desplegable derecha ahora enumera todos los eventos de documento disponibles. Haga clic en la lista desplegable derecha y seleccione Open. El editor de VBA crea un procedimiento stub: Private Sub Document_Open() con una línea End Sub. - Escriba el código de su macro dentro del evento
Entre Private Sub Document_Open() y End Sub, escriba el código que desea ejecutar. Por ejemplo, para mostrar un cuadro de mensaje, escriba: MsgBox “Document opened successfully.” También puede llamar a otra macro escribiendo Call MyMacroName. - Guarde el documento como un archivo habilitado para macros
Presione Ctrl+S. En el cuadro de diálogo Guardar como, establezca el tipo de archivo en Documento de Word habilitado para macros (.docm). Elija una ubicación y haga clic en Guardar. Si ve una advertencia sobre macros deshabilitadas, haga clic en Aceptar y continúe para ajustar la configuración de seguridad. - Habilite las macros en el Centro de confianza
Vaya a Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros. Seleccione Habilitar todas las macros. Para evitar habilitar todas las macros de forma permanente, seleccione Deshabilitar todas las macros excepto las firmadas digitalmente y firme su proyecto. Haga clic en Aceptar dos veces para cerrar los cuadros de diálogo. - Pruebe la macro
Cierre el documento. Vuelva a abrirlo. La macro debería ejecutarse automáticamente. Si no ocurre nada, vuelva a verificar la configuración de seguridad y confirme que la extensión del archivo sea .docm.
Pasos para crear una macro AutoOpen como alternativa
El método AutoOpen es más simple pero menos flexible que el evento Document_Open. Use este enfoque si trabaja con documentos heredados o prefiere la sintaxis anterior.
- Abra el editor de VBA
Presione Alt+F11 para abrir el editor de VBA. - Inserte un nuevo módulo estándar
En el Explorador de proyectos, haga clic con el botón derecho en el proyecto de su documento y elija Insertar > Módulo. Aparece un nuevo módulo llamado Module1 en la carpeta Módulos. - Escriba la subrutina AutoOpen
En la ventana de código de Module1, escriba:Sub AutoOpen() MsgBox "The document has opened." End SubPuede reemplazar la línea MsgBox con cualquier código que necesite.
- Guarde el documento como .docm
Presione Ctrl+S y seleccione Documento de Word habilitado para macros (.docm) como tipo de archivo. - Habilite las macros y pruebe
Siga los pasos 6 y 7 de la sección anterior para habilitar las macros y probar el documento.
Problemas comunes cuando las macros no se ejecutan al abrir
La seguridad de macros bloquea la ejecución del código
Word bloquea las macros de forma predeterminada. Incluso si escribió el código correctamente, la macro no se ejecutará a menos que habilite las macros. Vaya a Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros y seleccione Habilitar todas las macros para realizar pruebas. Para producción, firme la macro con un certificado digital y use Deshabilitar todas las macros excepto las firmadas digitalmente.
El documento se guarda como .docx en lugar de .docm
Si guarda accidentalmente el archivo como Documento de Word (.docx), Word elimina todo el código VBA sin previo aviso. Verifique la extensión del archivo en el Explorador de archivos. Si termina en .docx, cámbiele el nombre a .docm o abra el archivo, presione Alt+F11 y vuelva a agregar el código, luego guarde como .docm.
La macro AutoOpen está en el módulo incorrecto
AutoOpen debe ser un Public Sub en un módulo estándar o en el módulo ThisDocument. Si la coloca dentro de un módulo de clase o un formulario de usuario, Word no la encontrará. Mueva la subrutina a un módulo estándar o a ThisDocument.
El evento Document_Open está mal escrito o tiene parámetros incorrectos
El nombre del evento debe ser exactamente Document_Open. Cualquier variación, como DocumentOpen o Doc_Open, no se activará. Elimine el procedimiento con el nombre incorrecto y use el método de lista desplegable descrito anteriormente para insertar el stub correcto.
Document_Open vs AutoOpen: Diferencias clave
| Elemento | Evento Document_Open | Macro AutoOpen |
|---|---|---|
| Ubicación | Solo en el módulo de clase ThisDocument | Módulo estándar o ThisDocument |
| Desencadenador | Se activa cuando se carga el objeto de documento | Se activa cuando Word abre el archivo |
| Alcance | Específico del proyecto del documento | Se ejecuta en cualquier documento que la contenga |
| Compatibilidad | Funciona en .docm y .dotm | Funciona en .doc, .docm y .dotm |
| Soporte de parámetros | No se permiten parámetros | No se permiten parámetros |
| Mejor práctica | Recomendado para proyectos nuevos | Heredado, evitar para trabajos nuevos |
Ahora puede programar cualquier macro VBA para que se ejecute automáticamente cuando se abre un documento de Word usando el evento Document_Open o la macro AutoOpen. Comience escribiendo el código de su macro en el módulo ThisDocument o en un módulo estándar. Guarde siempre el archivo como un archivo .docm habilitado para macros y ajuste la configuración del Centro de confianza para permitir la ejecución de macros. Para automatización avanzada, considere agregar manejo de errores dentro del evento Document_Open para registrar fallos o mostrar mensajes al usuario sin bloquear Word.