¿Cómo imprimir automáticamente los adjuntos cuando llegan correos electrónicos en Outlook?
Este tutorial demuestra un método para combinar un script VBA y una regla de Outlook para ayudarte a imprimir automáticamente los adjuntos de ciertos correos electrónicos cuando lleguen a Outlook.
Imprimir automáticamente adjuntos cuando lleguen ciertos correos electrónicos
Supongamos que quieres imprimir automáticamente los adjuntos de los correos electrónicos entrantes de un remitente específico. Puedes hacer lo siguiente para lograrlo.
Paso 1: Crear un script en Outlook
Primero, necesitas crear un script VBA en Outlook.
1. Abre tu Outlook, presiona simultáneamente las teclas Alt + F11 para abrir la ventana Microsoft Visual Basic for Applications.
2. En la ventana Microsoft Visual Basic for Applications, haz doble clic en Project1 > Microsoft Outlook Objects > ThisOutlookSession para abrir la ventana ThisOutlookSession (Código), y luego copia el siguiente código en esta ventana de código.

Código VBA 1: Imprimir automáticamente adjuntos (todos los tipos de adjuntos) cuando lleguen correos electrónicos
Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20230223
Dim xFS As FileSystemObject
Dim xTempFolder As String
Dim xAtt As Attachment
Dim xShell As Object
Dim xFolder As Object, xFolderItem As Object
Dim xFileName As String
On Error GoTo xError
If Item.Attachments.Count = 0 Then Exit Sub
Set xFS = New FileSystemObject
xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
xTempFolder = xTempFolder & "\ATMP" & Format(Item.ReceivedTime, "yyyymmddhhmmss")
If Not xFS.FolderExists(xTempFolder) Then
MkDir (xTempFolder)
End If
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.NameSpace(0)
For Each xAtt In Item.Attachments
If IsEmbeddedAttachment(xAtt) = False Then
xFileName = xTempFolder & "\" & xAtt.FileName
xAtt.SaveAsFile (xFileName)
Set xFolderItem = xFolder.ParseName(xFileName)
xFolderItem.InvokeVerbEx ("print")
End If
Next xAtt
Set xFS = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
Set xShell = Nothing
xError:
If Err <> 0 Then
MsgBox Err.Number & " - " & Err.Description, , "Kutools for Outlook"
Err.Clear
End If
Exit Sub
End Sub
Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
xHtml = xItem.HTMLBody
xID = "cid:" & xCid
If InStr(xHtml, xID) > 0 Then
IsEmbeddedAttachment = True
End If
End If
End Function
Nota: Este código admite la impresión de todos los tipos de adjuntos recibidos en correos electrónicos. Si deseas imprimir solo un tipo específico de adjunto, como archivos pdf, aplica el siguiente código VBA.
Código VBA 2: Imprimir automáticamente el tipo especificado de adjuntos cuando lleguen correos electrónicos
Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20230223
Dim xFS As FileSystemObject
Dim xTempFolder As String
Dim xAtt As Attachment
Dim xShell As Object
Dim xFolder As Object, xFolderItem As Object
Dim xFileType As String, xFileName As String
On Error GoTo xError
If Item.Attachments.Count = 0 Then Exit Sub
Set xFS = New FileSystemObject
xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
xTempFolder = xTempFolder & "\ATMP" & Format(Item.ReceivedTime, "yyyymmddhhmmss")
If Not xFS.FolderExists(xTempFolder) Then
MkDir (xTempFolder)
End If
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.NameSpace(0)
For Each xAtt In Item.Attachments
If IsEmbeddedAttachment(xAtt) = False Then
xFileName = xAtt.FileName
xFileType = LCase$(Right$(xFileName, VBA.Len(xFileName) - VBA.InStrRev(xFileName, ".")))
xFileName = xTempFolder & "\" & xFileName
Select Case xFileType
Case "pdf" 'change "pdf" to the file extension you want to print
xAtt.SaveAsFile (xFileName)
Set xFolderItem = xFolder.ParseName(xFileName)
xFolderItem.InvokeVerbEx ("print")
End Select
End If
Next xAtt
Set xFS = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
Set xShell = Nothing
xError:
If Err <> 0 Then
MsgBox Err.Number & " - " & Err.Description, , "Kutools for Outlook"
Err.Clear
End If
Exit Sub
End Sub
Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
xHtml = xItem.HTMLBody
xID = "cid:" & xCid
If InStr(xHtml, xID) > 0 Then
IsEmbeddedAttachment = True
End If
End If
End Function
Notas:
3. Ve a Herramientas > Referencias. En el cuadro de diálogo Referencias – Project1 que aparece, marca la casilla Microsoft Scripting Runtime y luego haz clic en el botón Aceptar.

4. Guarda el código y presiona las teclas Alt + Q para cerrar la ventana Microsoft Visual Basic for Applications.
Nota: Asegúrate de que la opción Habilitar todas las macros esté activada en tu Outlook. Puedes verificar esta opción siguiendo los pasos que se muestran a continuación.

Paso 2: Construir una regla para usar el script
Después de agregar el script VBA en Outlook, necesitas crear una regla para usar el script basado en ciertas condiciones.
1. Ve a la pestaña Inicio, haz clic en Reglas > Administrar reglas y alertas.

2. En el cuadro de diálogo Reglas y alertas, haz clic en el botón Nueva regla para crear una regla.
Consejos: Si has agregado varias cuentas de correo electrónico a tu Outlook, especifica una cuenta en la lista desplegable Aplicar cambios a esta carpeta donde quieras aplicar la regla. De lo contrario, se aplicará a la bandeja de entrada de la cuenta de correo electrónico seleccionada actualmente.

3. En el primer cuadro de diálogo Asistente de reglas, selecciona Aplicar regla a los mensajes que recibo en el cuadro Paso 1, y luego haz clic en Siguiente.

4. En el segundo cuadro de diálogo Asistente de reglas, necesitas:

5. En el tercer cuadro de diálogo Asistente de reglas, necesitas configurar lo siguiente.

Consejos: Si la opción ejecutar un script no aparece en tu Asistente de reglas, puedes mostrarla siguiendo el método mencionado en este artículo: restaurar la opción Ejecutar un script faltante en la regla de Outlook.
6. Luego aparecerá otro Asistente de reglas preguntando por excepciones. Puedes seleccionar las excepciones si es necesario, de lo contrario, haz clic en el botón Siguiente sin realizar ninguna selección.

7. En el último Asistente de reglas, necesitas especificar un nombre para la regla, y luego hacer clic en el botón Finalizar.

8. Luego volverás al cuadro de diálogo Reglas y alertas, podrás ver la regla que creaste listada dentro, haz clic en el botón Aceptar para finalizar toda la configuración.

A partir de ahora, cuando se reciba un correo electrónico de la persona especificada, los archivos adjuntos se imprimirán automáticamente.
Artículos relacionados
Solo imprimir adjuntos de un correo electrónico o correos electrónicos seleccionados en Outlook
En Outlook, puedes imprimir los correos electrónicos, pero ¿has impreso solo los adjuntos de un correo electrónico o correos electrónicos seleccionados en Outlook? Este artículo introduce algunos trucos para resolver esta tarea.
Solo imprimir el encabezado del mensaje de un correo electrónico en Outlook
Al imprimir un correo electrónico en Outlook, se imprimirá tanto el encabezado del mensaje como el cuerpo del mensaje en el correo electrónico. Sin embargo, en algunos casos especiales, es posible que solo necesites imprimir el encabezado del mensaje con el asunto, el remitente, los destinatarios, etc. Este artículo presentará dos soluciones para hacerlo.
Imprimir un calendario en un rango de fechas especificado/personalizado en Outlook
Normalmente, al imprimir un calendario en la vista de Mes en Outlook, se seleccionará automáticamente el mes que contiene la fecha seleccionada actualmente. Pero, puede que necesites imprimir el calendario dentro de un rango de fechas personalizado, como 3 meses, medio año, etc. Este artículo presentará la solución para ti.
Imprimir un contacto con foto en Outlook
Normalmente, la foto de un contacto no se imprimirá al imprimir el contacto en Outlook. Pero a veces, será más impresionante imprimir un contacto con su foto. Este artículo presentará algunas soluciones alternativas para lograrlo.
Imprimir una selección de un correo electrónico en Outlook
Si recibiste un mensaje de correo electrónico y descubriste que hay una selección del contenido del correo electrónico que necesita ser impresa en lugar de imprimir todo el mensaje, ¿qué harías? En realidad, Outlook puede ayudarte a realizar esta operación con la ayuda de navegadores de internet, como Firefox y Internet Explorer. Aquí tomaré los navegadores de Internet como ejemplo. Por favor, mira los siguientes tutoriales.
Las mejores herramientas de productividad para Office
Últimas noticias: ¡Kutools para Outlook lanza una versión gratuita!
¡Descubre el nuevo Kutools para Outlook con más de100 funciones increíbles! ¡Haz clic para descargarlo ahora!
📧 Automatización de Email: Respuesta automática (disponible para POP e IMAP) / Programar envío de correos electrónicos / CC/BCC automático por regla al enviar correo / Reenvío automático (Regla avanzada) / Agregar saludo automáticamente / Dividir automáticamente correos con varios destinatarios en mensajes individuales ...
📨 Gestión de Email: Recuperar correos electrónicos / Bloquear correos sospechosos por asunto y otros criterios / Eliminar correos electrónicos duplicados / Búsqueda Avanzada / Organizar carpetas ...
📁 Adjuntos Pro: Guardar en lote / Desanexar en lote / Comprimir en lote / Guardar automáticamente / Desconectar automáticamente / Auto Comprimir ...
🌟 Magia de la Interfaz: 😊Más emojis atractivos y geniales / Recibe avisos cuando lleguen emails importantes / Minimiza Outlook en vez de cerrarlo ...
👍 Funciones de un solo clic: Responder a Todos con Adjuntos / Correos electrónicos Anti-Phishing / 🕘Mostrar la zona horaria del remitente ...
👩🏼🤝👩🏻 Contactos y Calendario: Agregar en lote contactos de correos seleccionados / Dividir un grupo de contactos en grupos individuales / Eliminar recordatorio de cumpleaños ...
Utiliza Kutools en tu idioma preferido; ¡compatible con Inglés, Español, Alemán, Francés, Chino y más de40 idiomas adicionales!

