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でメモリからそれらを開いて、ハードドライブにファイルを保存せずにこのコードを実行することが可能であるならば、それらを印刷不思議、およびハードドライブにそれらの痕跡を持っていないのですか?
Outlookなどの大きなソフトウェアでも、PDFファイルをローカルドライブ(temp-Folder)に保存して別のプログラムで開くことができます。ここで問題となるのは、PDFリーダーが開くファイルへの参照/パスが必要なことです。印刷後にドライブからファイルを削除するだけではどうですか? – MatSnow
VBAでフォルダとそのファイルを削除する際に問題が発生しました。そのため、ファイルをHDDに明示的に保存せずに解決策を探していました。しかし、私はVBA内でファイルとフォルダを削除して作業するので、あなたのアドバイスは私のために最終的にはうまくいきました! :)この質問を解決/回答するように設定することは可能ですか? – user2011985