山东舜玉建设工程有限公司网站,富锦网站,仙游有人做网站,山东金城建设网站使用VBA打印工作表和工作簿文件都很容易实现#xff0c;但是有时需要使用VBA打印已经保存在本机的其他文件#xff0c;例如PDF文件格式的账单#xff0c;如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。
调用Windows的Shell命令可以实现打印PDF文件。
示例代码…使用VBA打印工作表和工作簿文件都很容易实现但是有时需要使用VBA打印已经保存在本机的其他文件例如PDF文件格式的账单如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。
调用Windows的Shell命令可以实现打印PDF文件。
示例代码如下。
#If VBA7 And Win64 ThenPrivate Declare PtrSafe Function ShellExecute Lib shell32.dll Alias ShellExecuteA ( _ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, _ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#ElsePublic Declare 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
#End IfSub PrintPDFUsingAPI()Dim PDFPath As String, resultPDFPath d:\temp\test.pdfresult ShellExecute(0, print, PDFPath, 0, 0, 0)If result 32 ThenMsgBox 打印命令已发送至默认打印机。ElseMsgBox 无法执行打印命令。End If
End Sub【代码解析】 第1~9行代码声明Windows API函数这里使用了条件编译以便于适配32位和64位Office软件。 第13行代码指定PDF文件的全路径。 第14行代码打印PDF文件。 如果API执行成功返回值为32第15行代码判断返回值第16行和18行代码输出相应的提示信息。