Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何在电子邮件中自动打印附件?_Vba_Outlook - Fatal编程技术网

Vba 如何在电子邮件中自动打印附件?

Vba 如何在电子邮件中自动打印附件?,vba,outlook,Vba,Outlook,每天我都会收到数百封电子邮件,其中附有需要打印的发票的pdf附件 目前,我手工打印出来,每天要花上几个小时 如何使用Outlook vba自动打印电子邮件中的附件,然后删除该电子邮件 将Microsoft脚本运行时添加到引用 创建新规则,然后单击“在我收到的邮件上应用规则”/“有附件的邮件上应用规则”/“运行脚本” 看看这个答案:。这个问题与你的要求无关。答案中的宏将收件箱中每封电子邮件的选定属性输出到Excel工作簿,以帮助OP了解这些属性的性质。它显示了如何读取收件箱以及如何访问任何附件的名

每天我都会收到数百封电子邮件,其中附有需要打印的发票的pdf附件

目前,我手工打印出来,每天要花上几个小时

如何使用Outlook vba自动打印电子邮件中的附件,然后删除该电子邮件

将Microsoft脚本运行时添加到引用

创建新规则,然后单击“在我收到的邮件上应用规则”/“有附件的邮件上应用规则”/“运行脚本”


看看这个答案:。这个问题与你的要求无关。答案中的宏将收件箱中每封电子邮件的选定属性输出到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