电子邮件到达 Outlook 时如何自动打印附件?
本教程演示了一种结合 VBA 脚本和 Outlook 规则的方法,以帮助您在某些电子邮件到达 Outlook 时自动打印它们的附件。
某些电子邮件到达时自动打印附件
假设您想自动打印来自某个发件人的传入电子邮件的附件。 您可以执行以下操作来完成它。
第 1 步:在 Outlook 中创建脚本
首先,您需要在 Outlook 中创建一个 VBA 脚本。
1.启动Outlook,按 其他 + F11 同时打开 Microsoft Visual Basic应用程序 窗口。
2.在 Microsoft Visual Basic应用程序 窗口,双击 Project1 > Microsoft Outlook对象 > 本次展望会议 打开 ThisOutlookSession(代码) 窗口,然后将以下代码复制到此代码窗口中。
VBA 代码 1:电子邮件到达时自动打印附件(所有类型的附件)
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
请注意: 此代码支持打印电子邮件中收到的所有类型的附件。 如果您只想打印指定类型的附件,例如 pdf 文件,请应用以下 VBA 代码。
VBA代码2:邮件到达时自动打印指定类型的附件
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
:
3. 继续点击 工具 > 引用。 在弹出 参考 - 项目1 对话框,检查 Microsoft脚本运行时 框,然后单击 OK 按钮。
4.保存代码,然后按 其他 + Q 关闭键 Microsoft Visual Basic应用程序 窗口。
请注意: 请确保 启用所有宏 Outlook 中启用了该选项。 您可以按照下面显示的步骤检查此选项。
Step2:构建规则以使用脚本
在 Outlook 中添加 VBA 脚本后,您需要创建规则以根据某些条件使用该脚本。
1. 转到主页选项卡,单击 规则 > 管理规则和警报.
2.在 规则和警报 对话框中,单击 新规则 按钮以创建规则。
提示: 如果您在 Outlook 中添加了多个电子邮件帐户,请在 将更改应用到此文件夹 要应用规则的下拉列表。 否则,它将应用于当前选择的电子邮件帐户的收件箱。
3.在第一 规则向导 对话框中选择 对我收到的消息应用规则 ,在 框,然后单击 下一步。
4.在第二 规则向导 对话框,您需要:
5.在第三 规则向导 对话框,您需要配置如下。
提示: 如果“运行脚本” 选项在您的 规则向导,您可以按照本文中提到的方法进行显示: 恢复 Outlook 规则中缺少的运行脚本选项.
6.然后另一个 规则向导 弹出询问例外情况。 如有必要,您可以选择例外,否则,单击 下一页 没有任何选择的按钮。
7.最后 规则向导,您需要为规则指定一个名称,然后单击 完成 按钮。
8.然后返回到 规则和警报 对话框,你可以看到你创建的规则列在里面,点击 OK 按钮以完成整个设置。
从现在开始,当收到来自指定人员的电子邮件时,将自动打印附件。
相关文章
仅从一封电子邮件或 Outlook 中选定的电子邮件打印附件
在 Outlook 中,您可以打印电子邮件,但您是否只打印了一封电子邮件或 Outlook 中选定电子邮件的附件? 本文介绍解决此工作的技巧。
在 Outlook 中仅打印电子邮件的邮件标题
在 Outlook 中打印电子邮件时,它将同时打印电子邮件中的邮件标题和邮件正文。 但是,在某些特殊情况下,您可能只需要打印出带有主题、发件人、收件人等的邮件标题。本文将介绍两种解决方案。
在 Outlook 的指定/自定义日期范围内打印日历
通常,在 Outlook 的月视图中打印日历时,它会自动选择包含当前选定日期的月份。 但是,您可能需要在自定义日期范围内打印日历,例如 3 个月、半年等。本文将为您介绍解决方案。
在 Outlook 中打印带图片的联系人
通常,在Outlook中打印联系人时,不会将其图片打印出来。 但是有时,打印带有图片的联系人会给人留下深刻的印象。 本文将介绍一些解决方法来完成它。
在 Outlook 中打印电子邮件的选择
如果您收到一封电子邮件,并且发现需要打印一些电子邮件内容,而不是打印整个邮件,您将怎么办? 实际上,Outlook可以借助Internet浏览器(例如Firefox和Internet Explorer)帮助您实现此操作。 在这里,我将以Internet浏览器为例。 请查看以下教程。
最佳办公生产力工具
Kutools for Outlook - 超过 100 种强大功能可增强您的 Outlook
🤖 人工智能邮件助手: 具有人工智能魔力的即时专业电子邮件——一键天才回复、完美语气、多语言掌握。轻松改变电子邮件! ...
📧 电子邮件自动化: 外出(适用于 POP 和 IMAP) / 安排发送电子邮件 / 发送电子邮件时按规则自动抄送/密件抄送 / 自动转发(高级规则) / 自动添加问候语 / 自动将多收件人电子邮件拆分为单独的消息 ...
📨 电子邮件管理: 轻松回忆电子邮件 / 按主题和其他人阻止诈骗电子邮件 / 删除重复的电子邮件 / 高级搜索 / 合并文件夹 ...
📁 附件专业版: 批量保存 / 批量分离 / 批量压缩 / 自动保存 / 自动分离 / 自动压缩 ...
🌟 界面魔法: 😊更多又漂亮又酷的表情符号 / 使用选项卡式视图提高 Outlook 工作效率 / 最小化 Outlook 而不是关闭 ...
👍 一键奇迹: 使用传入附件回复全部 / 反网络钓鱼电子邮件 / 🕘显示发件人的时区 ...
👩🏼🤝👩🏻 通讯录和日历: 从选定的电子邮件中批量添加联系人 / 将联系人组拆分为各个组 / 删除生日提醒 ...
超过 100特点 等待您的探索! 单击此处了解更多。