Desea automatizar una acción personalizada en Outlook, como mover correos electrónicos a una carpeta específica según una lógica compleja o guardar archivos adjuntos automáticamente. Es posible que las condiciones y acciones de reglas integradas no cubran sus necesidades exactas. Las reglas de Outlook pueden ejecutar una acción de script, pero esta característica solo está disponible en la versión clásica de Outlook para Windows, no en el nuevo Outlook para Windows ni en Outlook en la web. Este artículo explica cómo habilitar la acción Ejecutar un script en una regla y cómo escribir y asignar un script VBA simple para automatizar una tarea.
Puntos clave: Crear una regla de Outlook que ejecute un script VBA
- Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros: Habilite todas las macros para permitir que los scripts VBA se ejecuten cuando una regla los active.
- Pestaña Desarrollador > Visual Basic: Abra el editor de VBA e inserte un nuevo módulo para escribir su script para la acción de la regla.
- Archivo > Administrar reglas y alertas > Nueva regla > Empezar con una regla en blanco > Comprobar mensajes > Seleccionar acción Ejecutar un script: Asigne su script VBA como la acción de la regla.
Por qué la acción Ejecutar un script se limita a Outlook clásico
La acción Ejecutar un script forma parte del motor de reglas del lado cliente heredado de Outlook. Este motor se ejecuta en su equipo local y puede ejecutar macros VBA almacenadas en el proyecto de VBA de Outlook. El nuevo Outlook para Windows y Outlook en la web usan un motor de reglas del lado servidor que no admite la ejecución de scripts locales. Outlook clásico (la aplicación de escritorio completa) conserva esta característica para la compatibilidad con flujos de trabajo empresariales que dependen de la automatización personalizada.
La acción de script se ejecuta después de que se cumplan las condiciones de la regla. El script debe ser una subrutina de VBA en el proyecto de VBA de Outlook que acepte un único argumento de tipo MailItem. El script puede leer o modificar el elemento de correo, pero no puede crear nuevos elementos ni mostrar cuadros de diálogo durante la ejecución de la regla. Si su script requiere entrada del usuario o crea nuevos elementos, fallará silenciosamente.
Pasos para configurar una regla de Outlook que ejecute un script
- Habilitar macros en el Centro de confianza de Outlook
Abra Outlook. Vaya a Archivo > Opciones > Centro de confianza. Haga clic en Configuración del Centro de confianza. Seleccione Configuración de macros. Elija Habilitar todas las macros. Haga clic en Aceptar dos veces para cerrar los cuadros de diálogo. - Abrir el editor de VBA
Presione Alt + F11 para abrir el editor de Visual Basic para Aplicaciones. Si el panel Explorador de proyectos no está visible, presione Ctrl + R para mostrarlo. - Insertar un nuevo módulo
En el Explorador de proyectos, busque Project1 (VbaProject.OTM). Haga clic con el botón derecho y seleccione Insertar > Módulo. Se abre una ventana de código en blanco. - Escribir la subrutina del script
Pegue el siguiente script de ejemplo en la ventana del módulo. Este script mueve los mensajes de un remitente específico a una carpeta llamada “Project X”. Reemplace el correo electrónico del remitente y el nombre de la carpeta según sea necesario.Public Sub MoveToProjectX(ByVal myMail As Outlook.MailItem) Dim objFolder As Outlook.Folder Set objFolder = Application.Session.GetDefaultFolder(olFolderInbox).Folders("Project X") myMail.Move objFolder Set objFolder = Nothing End Sub - Guardar el script
Presione Ctrl + S para guardar el proyecto de VBA. Cierre el editor de VBA. - Crear una nueva regla
Vaya a Archivo > Administrar reglas y alertas. Haga clic en Nueva regla. En Empezar con una regla en blanco, seleccione Comprobar mensajes cuando lleguen. Haga clic en Siguiente. - Establecer condiciones
Seleccione las condiciones que desee. Por ejemplo, marque de personas o grupo público y luego haga clic en el valor subrayado en la descripción de la regla para especificar el remitente. Haga clic en Siguiente. - Asignar la acción de script
En la lista de acciones, desplácese hacia abajo y marque ejecutar un script. En el área de descripción de la regla, haga clic en la palabra subrayada script. Un cuadro de diálogo muestra una lista de scripts disponibles. Seleccione MoveToProjectX y haga clic en Aceptar. Haga clic en Siguiente. - Establecer excepciones y nombrar la regla
Agregue las excepciones que necesite. Haga clic en Siguiente. Escriba un nombre para la regla, como “Mover correos de Project X”. Asegúrese de que Activar esta regla esté marcada. Haga clic en Finalizar.
Problemas comunes al ejecutar una regla de script
Mensaje “La acción de script no está disponible”
Este error aparece cuando el proyecto de VBA no contiene una subrutina pública con la firma correcta. La subrutina debe ser Public y aceptar exactamente un argumento de tipo Outlook.MailItem. Si la subrutina es Private o tiene un tipo de argumento diferente, el editor de reglas no la mostrará. Abra el editor de VBA y verifique que la declaración de la subrutina coincida con el ejemplo anterior.
El script se ejecuta pero no hace nada
El script puede contener un error de tiempo de ejecución que se ignora silenciosamente. Pruebe el script manualmente ejecutándolo desde el editor de VBA con un elemento de correo de ejemplo. En la ventana Inmediato, escriba ?Application.Session.GetDefaultFolder(olFolderInbox).Folders("Project X") para confirmar que la carpeta existe. Si el nombre de la carpeta está mal escrito, el script fallará silenciosamente. También asegúrese de que la configuración de seguridad de macros no esté bloqueando la ejecución. Establezca la seguridad de macros en Habilitar todas las macros como se muestra en el paso 1.
La regla se ejecuta pero el script no se activa
Es posible que el motor de reglas no active acciones del lado cliente si Outlook se ejecuta en modo en caché con una conexión lenta. Compruebe que Outlook esté en línea. Vaya a la pestaña Enviar/Recibir y haga clic en Trabajar sin conexión para desactivarlo si está activado. También verifique que la regla no esté configurada para ejecutarse solo en este equipo y que el script esté guardado en el proyecto de VBA correcto. El script debe estar en Project1 (VbaProject.OTM), no en un proyecto de complemento.
| Elemento | Outlook clásico | Nuevo Outlook / Outlook Web |
|---|---|---|
| Tipo de regla | Del lado cliente y del lado servidor | Solo del lado servidor |
| Acción Ejecutar un script | Disponible | No disponible |
| Requisito de macro VBA | Requerido | No compatible |
| Ideal para | Automatización personalizada en el equipo local | Reglas básicas que funcionan en todas partes |
La acción Ejecutar un script en Outlook clásico le brinda la capacidad de automatizar tareas que las reglas estándar no pueden manejar, como mover correos electrónicos según una lógica personalizada o modificar propiedades de mensajes. Antes de crear una regla de script, confirme que está usando Outlook clásico para Windows y que las macros están habilitadas. Escriba primero un script de prueba simple y luego asígnelo a una regla con una sola condición. Este enfoque reduce el tiempo de solución de problemas y le ayuda a aprender la firma exacta del script requerida. Para la automatización avanzada, considere usar Power Automate con conectores de Outlook, que funciona en todas las versiones de Outlook y no requiere VBA.