2017-08-23 4 views
1

私は選択された電子メールを循環し、その電子メールのすべてのPDF添付ファイルを印刷するVBAスクリプトを持っています。ハードドライブに保存せずに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ファイルをローカルドライブ(temp-Folder)に保存して別のプログラムで開くことができます。ここで問題となるのは、PDFリーダーが開くファイルへの参照/パスが必要なことです。印刷後にドライブからファイルを削除するだけではどうですか? – MatSnow

+0

VBAでフォルダとそのファイルを削除する際に問題が発生しました。そのため、ファイルをHDDに明示的に保存せずに解決策を探していました。しかし、私はVBA内でファイルとフォルダを削除して作業するので、あなたのアドバイスは私のために最終的にはうまくいきました! :)この質問を解決/回答するように設定することは可能ですか? – user2011985

答えて

0

Outlookなどの「大きな」ソフトウェアでも、PDFファイルをローカルドライブ(temp-Folder)に保存して別のプログラムで開くことができます。
ここでの問題は、PDFリーダーが開くファイルへの参照/パスが必要なことです。

印刷後にドライブからファイルを削除することをお勧めします。

関連する問題