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打开它们执行此代码,打印出来,并让他们的硬盘驱动器上的无痕?
即使是“大”软件,例如Outlook,也会将PDF文件保存到本地驱动器(临时文件夹)以在另一个程序中打开它们。这里的问题是PDF阅读器需要一个你想打开的文件的参考/路径。为什么不在打印后从驱动器中删除文件? – MatSnow
我在使用VBA删除文件夹及其文件时遇到了麻烦,这就是为什么我一直在寻找解决方案而没有明确地将文件保存到硬盘。但是,我在VBA中删除了文件和文件夹以便工作,所以您的建议对我来说最终还是有效的! :)是否可以设置此问题解决/回答? – user2011985