Vba “从文件夹打印PDF”正在打开Acrobat Reader,但未发送到打印机
我正在Outlook中整合一些VBA,以便将PDF附件从Outlook文件夹发送到C:\Temp\中的文件夹,然后将其打印到默认打印机 问题是,这会将Acrobat Reader打开到“最近”文件列表,而不会实际向默认打印机发送任何内容 我当前的代码:Vba “从文件夹打印PDF”正在打开Acrobat Reader,但未发送到打印机,vba,printing,outlook,adobe,Vba,Printing,Outlook,Adobe,我正在Outlook中整合一些VBA,以便将PDF附件从Outlook文件夹发送到C:\Temp\中的文件夹,然后将其打印到默认打印机 问题是,这会将Acrobat Reader打开到“最近”文件列表,而不会实际向默认打印机发送任何内容 我当前的代码: Option Explicit Public Sub PrintAttachments() Dim Inbox As MAPIFolder, Item As MailItem, Atmt As Attachment, FileName As St
Option Explicit
Public Sub PrintAttachments()
Dim Inbox As MAPIFolder, Item As MailItem, Atmt As Attachment, FileName As String, i As Integer, Path As String
Set Inbox = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("Batch Prints")
For Each Item In Inbox.Items
For Each Atmt In Item.Attachments
Path = "C:\Temp\Batch Prints\"
If Len(Dir(Path, vbDirectory)) = 0 Then MkDir Path
FileName = Path & Atmt.FileName
Atmt.SaveAsFile FileName
Call PrintPdf(FileName)
Next
Next
Set Inbox = Nothing
End Sub
Public Sub PrintPdf(Filepath As String)
Shell "C:\Program Files (x86)\Adobe\Acrobat Reader 2017\Reader\AcroRd32.exe /p /h " & Chr(34) & Filepath & Chr(34), vbHide
End Sub
不会发生错误,单步执行代码不会提示任何问题,但Acrobat Reader应用程序将打开而不是打印
是否有一些明显的地方我没有将这些文件实际发送到默认打印机
谢谢大家! 尝试设置PDF
感谢您的回复。我现在不在办公室用打印机测试,但我会在尝试你上面提到的内容后给你回复!我尝试了特权位置,但它没有将其发送到打印机。然而,AcrobatReader这次没有出现,这很有趣。下次有机会我会试试ShellExecuteA。我终于可以试试你提供的代码了。与上一条评论相同:无错误&adobe未打开,但也未向打印机发送任何内容。看起来什么也没发生,虽然我已经通过了代码,所以我可以确认它确实通过了所有代码。
Option Explicit
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long _
) As Long
Public Sub PrintAttachments()
Dim Inbox As MAPIFolder
Dim Item As MailItem
Dim Atmt As Attachment
Dim FileName As String
Dim i As Integer
Dim Path As String
Set Inbox = Outlook.Application.GetNamespace( _
"MAPI").GetDefaultFolder( _
olFolderInbox).Folders("Batch Prints")
For Each Item In Inbox.Items
DoEvents
For Each Atmt In Item.Attachments
DoEvents
Path = "C:\Temp\Batch Prints\"
If Len(Dir(Path, vbDirectory)) = 0 Then MkDir Path
FileName = Path & Atmt.FileName
Atmt.SaveAsFile FileName
ShellExecute 0, "print", FileName, vbNullString, vbNullString, 0
Next
Next
Set Inbox = Nothing
End Sub