¿Cómo imprimir automáticamente los archivos adjuntos al recibir correos en Outlook?
Este tutorial presenta un método para combinar un script de VBA con una regla de Outlook que le permitirá imprimir automáticamente los archivos adjuntos de determinados correos electrónicos en cuanto los reciba.
Imprimir automáticamente los archivos adjuntos al recibir ciertos correos
Supongamos que desea imprimir automáticamente los archivos adjuntos de los correos entrantes procedentes de un remitente específico. Siga los pasos que se indican a continuación para lograrlo.
Paso 1: Crear un script en Outlook
En primer lugar, debe crear un script de VBA en Outlook.
1. Inicie Outlook y pulse simultáneamente las teclas Alt + F11 para abrir la ventana de Microsoft Visual Basic para Aplicaciones.
2. En la ventana de Microsoft Visual Basic para Aplicaciones, haga doble clic en Project1 > Objetos de Microsoft Outlook > ThisOutlookSession para abrir la ventana de ThisOutlookSession (Código) y, a continuación, copie el siguiente código en dicha ventana.

Código VBA 1: Imprimir automáticamente los archivos adjuntos (de cualquier tipo) al recibir correos
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 permite imprimir cualquier tipo de archivo adjunto recibido en los correos. Si desea imprimir únicamente un tipo específico de archivo adjunto, como archivos PDF, aplique el siguiente código VBA.
Código VBA 2: Imprimir automáticamente un tipo específico de archivos adjuntos al recibir correos
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. Haga clic en Herramientas > Referencias. En el cuadro de diálogo emergente Referencias – Project1, active la casilla Microsoft Scripting Runtime y, a continuación, haga clic en el botón Aceptar.

4. Guarde el código y pulse las teclas Alt + Q para cerrar la ventana de Microsoft Visual Basic para Aplicaciones.
Nota: Asegúrese de que la opción Habilitar todas las macros esté activada en su Outlook. Puede comprobar esta opción siguiendo los pasos que se muestran a continuación.

Paso 2: Crear una regla para usar el script
Después de añadir el script VBA en Outlook, deberá crear una regla que lo utilice según ciertas condiciones.
1. Vaya a la pestaña Inicio, haga clic en Reglas > Administrar reglas y alertas.

2. En el cuadro de diálogo Reglas y alertas, haga clic en el botón Nueva regla para crear una regla.
Consejos: Si ha añadido varias cuentas de correo a su Outlook, especifique una cuenta en la lista desplegable Aplicar cambios a esta carpeta donde desee aplicar la regla. De lo contrario, se aplicará a la bandeja de entrada de la cuenta actualmente especificada.

3. En el primer cuadro de diálogo Asistente de reglas, seleccione Aplicar regla a los mensajes que reciba en el recuadro Paso 1 y, a continuación, haga clic en Siguiente.

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

5. En el tercer cuadro de diálogo Asistente de reglas, debe configurarlo de la siguiente manera.

Consejos: Si la opción «ejecutar un script» no aparece en su Asistente de reglas, puede hacerla visible siguiendo el método descrito en este artículo: restaurar la opción Ejecutar un script ausente en la regla de Outlook.
6. A continuación, aparecerá otro cuadro de diálogo Asistente de reglas solicitando excepciones. Puede seleccionar excepciones si es necesario; de lo contrario, haga clic en el botón Siguiente sin realizar ninguna selección.

7. En el último cuadro de diálogo Asistente de reglas, debes asignar un nombre a la regla y, a continuación, hacer clic en el botón Finalizar.

8. A continuación, volverá al cuadro de diálogo Reglas y alertas, donde verá la regla que ha creado. Haga clic en el botón Aceptar para finalizar toda la configuración.

A partir de ahora, al recibir un correo del remitente especificado, el adjunto se imprimirá automáticamente.
Artículos relacionados
Imprime únicamente los archivos adjuntos de un correo electrónico o de varios seleccionados en Outlook
En Outlook puedes imprimir correos electrónicos, pero ¿has impreso alguna vez solo los archivos adjuntos de un mensaje o de varios seleccionados? Este artículo te muestra algunos trucos para lograrlo.
Imprimir únicamente la cabecera de un mensaje en Outlook
Al imprimir un correo en Outlook, se imprime tanto la cabecera del mensaje como su cuerpo. Sin embargo, en ciertos casos especiales, es posible que solo necesite imprimir la cabecera del mensaje, con el asunto, el remitente, los destinatarios, etc. Este artículo le presenta dos soluciones para lograrlo.
Imprimir un calendario en un rango de fechas especificado o personalizado en Outlook
Normalmente, al imprimir un calendario en vista mensual en Outlook, se selecciona automáticamente el mes que contiene la fecha actual. Sin embargo, es posible que necesite imprimir el calendario para un rango de fechas personalizado, como tres meses, medio año, etc. Este artículo le ofrece la solución adecuada.
Imprimir un contacto con su foto en Outlook
Por lo general, la foto de un contacto no se imprime al imprimirlo en Outlook. Sin embargo, en ocasiones resulta mucho más impactante incluir su imagen. En este artículo te ofrecemos algunas soluciones alternativas para lograrlo.
Imprimir una selección de un correo electrónico en Outlook
¿Ha recibido un mensaje de correo y solo necesita imprimir una parte del contenido, en lugar de todo el mensaje? En realidad, Outlook le permite hacerlo con la ayuda de navegadores web como Firefox o Internet Explorer. A continuación, utilizaremos estos navegadores como ejemplo. Consulte los siguientes tutoriales.
Las mejores herramientas de productividad para Office
¡Descubra el nuevo Kutools para Outlook con 100+ funciones increíbles!¡Haga clic para descargar ahora!
📧Automatización de correo electrónico: Respuesta automática (disponible para POP e IMAP) / Programar el envío de correos electrónicos / CC/BCC automático según reglas al enviar correos / Reenvío automático (regla avanzada) / Añadir saludo automáticamente / Dividir automáticamente los correos con múltiples destinatarios en mensajes individuales...
📨Gestión de correo electrónico: Recupera tus correos electrónicos / Bloquea correos fraudulentos por asunto y otros criterios / Elimina correos electrónicos duplicados / Búsqueda avanzada / Organiza tus carpetas…
📁Archivos adjuntos Pro: Guardar en lote / Desvincular en lote / Comprimir en lote / Guardar automáticamente / Desconectar automáticamente / Auto comprimir...
🌟Magia de la interfaz: 😊Más emojis bonitos y modernos / Le avisa cuando llegan correos importantes / Minimiza Outlook en lugar de cerrarlo…
👍Maravillas con un solo clic: Responder a Todos con Adjuntos / Correos electrónicos antiphishing / 🕘 Mostrar zona horaria: hora actual del remitente...
👩🏼🤝👩🏻Contactos y calendario: Crear contactos en lote a partir de correos seleccionados / Dividir un grupo de contactos en grupos individuales / Eliminar recordatorio de cumpleaños...
Utilice Kutools en su idioma preferido: compatible con inglés, español, alemán, francés, chino y más de 40 idiomas adicionales.


🚀 Descarga con un solo clic — Obtenga todos los complementos de Office
Muy recomendado: Kutools for Office (5 en 1)
Un solo clic para descargar cinco instaladoresa la vez —Kutools para Excel, Outlook, Word, PowerPointy Office Tab Pro.¡Haga clic para descargar ahora!
- ✅Comodidad con un solo clic: Descargue los cinco paquetes de instalación de una sola vez.
- 🚀Listo para cualquier tarea de Office: Instale los complementos que necesite, justo cuando los necesite.
- 🧰Incluido: Kutools para Excel / Kutools para Outlook / Kutools para Word / Office Tab Pro / Kutools for PowerPoint