2017-08-23 23 views
1

我有一个VBA脚本,它循环选定的电子邮件并打印所有电子邮件中的PDF附件。打印Outlook附件而不保存在硬盘上

目前,该脚本将PDF文件保存到硬盘驱动器,然后打开并打印它们。

Sub BatchPrintAllAttachmentsinMultipleEmails() 
    Dim objFileSystem As Object 
    Dim strTempFolder As String 
    Dim objSelection As Outlook.Selection 
    Dim objItem As Object 
    Dim objMail As Outlook.MailItem 
    Dim objAttachments As Outlook.Attachments 
    Dim objAttachment As Outlook.Attachment 
    Dim objShell As Object 
    Dim objTempFolder As Object 
    Dim objTempFolderItem As Object 
    Dim strFilePath As String 




    Set objFileSystem = CreateObject("Scripting.FileSystemObject") 
    strTempFolder = objFileSystem.GetSpecialFolder(2).Path & "\Temp for Attachments " & Format(Now, "YYYY-MM-DD_hh-mm-ss") 
    strTempFolder = "W:\my documents\test" 

    MkDir (strTempFolder) 

    Set objSelection = Outlook.Application.ActiveExplorer.Selection 

    For Each objItem In objSelection 
     If TypeOf objItem Is MailItem Then 
      Set objMail = objItem 
      Set objAttachments = objMail.Attachments 

      'Save all the attachments in the temp folder 
      For Each objAttachment In objAttachments 
       strFilePath = strTempFolder & "\" & objAttachment.FileName 
       If InStr(strFilePath, ".pdf") <> 0 Or InStr(strFilePath, ".PDF") <> 0 Then 
        objAttachment.SaveAsFile (strFilePath) 
        Set objShell = CreateObject("Shell.Application") 
        Set objTempFolder = objShell.NameSpace(0) 
        Set objTempFolderItem = objTempFolder.ParseName(strFilePath) 
        objTempFolderItem.InvokeVerbEx ("print") 'try now 
       End If 



      Next objAttachment 
     End If 
    Next 

End Sub 

我想知道是否有可能不将文件保存到硬盘,即刚刚从内存中VBA打开它们执行此代码,打印出来,并让他们的硬盘驱动器上的无痕?

+1

即使是“大”软件,例如Outlook,也会将PDF文件保存到本地驱动器(临时文件夹)以在另一个程序中打开它们。这里的问题是PDF阅读器需要一个你想打开的文件的参考/路径。为什么不在打印后从驱动器中删除文件? – MatSnow

+0

我在使用VBA删除文件夹及其文件时遇到了麻烦,这就是为什么我一直在寻找解决方案而没有明确地将文件保存到硬盘。但是,我在VBA中删除了文件和文件夹以便工作,所以您的建议对我来说最终还是有效的! :)是否可以设置此问题解决/回答? – user2011985

回答

0

即使“大”软件(例如Outlook)也将PDF文件保存到本地驱动器(临时文件夹)以在另一个程序中打开它们。
这里的问题是,PDF阅读器需要一个你想打开的文件的引用/路径。

我建议打印后从驱动器中删除文件。

相关问题