Vba 如何在电子邮件中自动打印附件?
每天我都会收到数百封电子邮件,其中附有需要打印的发票的pdf附件 目前,我手工打印出来,每天要花上几个小时 如何使用Outlook vba自动打印电子邮件中的附件,然后删除该电子邮件 将Microsoft脚本运行时添加到引用 创建新规则,然后单击“在我收到的邮件上应用规则”/“有附件的邮件上应用规则”/“运行脚本”Vba 如何在电子邮件中自动打印附件?,vba,outlook,Vba,Outlook,每天我都会收到数百封电子邮件,其中附有需要打印的发票的pdf附件 目前,我手工打印出来,每天要花上几个小时 如何使用Outlook vba自动打印电子邮件中的附件,然后删除该电子邮件 将Microsoft脚本运行时添加到引用 创建新规则,然后单击“在我收到的邮件上应用规则”/“有附件的邮件上应用规则”/“运行脚本” 看看这个答案:。这个问题与你的要求无关。答案中的宏将收件箱中每封电子邮件的选定属性输出到Excel工作簿,以帮助OP了解这些属性的性质。它显示了如何读取收件箱以及如何访问任何附件的名
看看这个答案:。这个问题与你的要求无关。答案中的宏将收件箱中每封电子邮件的选定属性输出到Excel工作簿,以帮助OP了解这些属性的性质。它显示了如何读取收件箱以及如何访问任何附件的名称。这将提供所需宏的基础。您必须检查附件的扩展名是否为PDF。宏无法处理附件。你必须先保存PDF附件,然后再打印。话虽如此,每天打印数百封电子邮件是浪费纸张。正如他们所说:“为你和我保存一棵树”。一些相关的问题(见下面链接的右下方)看起来很有趣。我希望是这样,但高层管理层喜欢纸面上的一切。谢谢你
Option Explicit
Public Sub Example(Item As Outlook.MailItem)
Dim FSO As FileSystemObject
Set FSO = New FileSystemObject
'Temporary Folder
Dim TempFldr As String
TempFldr = Environ("USERPROFILE") & "\Documents\Temp\"
CreateDir TempFldr
Dim Atmt As Attachment
Dim AtmtName As String
Dim oShell As Object
Dim Fldr As Object
Dim FldrItem As Object
For Each Atmt In Item.Attachments
AtmtName = TempFldr & Atmt.FileName
Atmt.SaveAsFile AtmtName
Set oShell = CreateObject("Shell.Application")
Set Fldr = oShell.NameSpace(0)
Set FldrItem = Fldr.ParseName(AtmtName)
FldrItem.InvokeVerbEx ("print")
Next Atmt
'Cleans up
If Not FSO Is Nothing Then Set FSO = Nothing
If Not Fldr Is Nothing Then Set Fldr = Nothing
If Not FldrItem Is Nothing Then Set FldrItem = Nothing
If Not oShell Is Nothing Then Set oShell = Nothing
End Sub
Private Function CreateDir(FldrPath As String)
Dim Elm As Variant
Dim CheckPath As String
CheckPath = ""
For Each Elm In Split(FldrPath, "\")
CheckPath = CheckPath & Elm & "\"
If Len(Dir(CheckPath, vbDirectory)) = 0 Then
MkDir CheckPath
Debug.Print CheckPath & " Folder Created"
End If
Debug.Print CheckPath & " Folder Exist"
Next
End Function