使用VBA打印PDF文件

使用VBA打印工作表和工作簿文件都很容易实现,但是有时需要使用VBA打印已经保存在本机的其他文件,例如PDF文件格式的账单,如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。

调用Windows的Shell命令可以实现打印PDF文件。

示例代码如下。

#If VBA7 And Win64 Then
    Private 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
#Else
    Public 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 If

Sub PrintPDFUsingAPI()
    Dim PDFPath As String, result
    PDFPath = "d:\temp\test.pdf"
    result = ShellExecute(0, "print", PDFPath, 0&, 0&, 0)
    If result > 32 Then
        MsgBox "打印命令已发送至默认打印机。"
    Else
        MsgBox "无法执行打印命令。"
    End If
End Sub

【代码解析】

第1~9行代码声明Windows API函数,这里使用了条件编译,以便于适配32位和64位Office软件。

第13行代码指定PDF文件的全路径。

第14行代码打印PDF文件。

如果API执行成功返回值为32,第15行代码判断返回值,第16行和18行代码输出相应的提示信息。

相关推荐
LostSpeed2 小时前
在福昕(pdf)阅读器中导航到上次阅读页面的方法
pdf
旭久2 小时前
SpringBoot的Thymeleaf做一个可自定义合并td的pdf表格
pdf·html·springboot
神色自若21 小时前
Net9为PDF文字替换,使用Spire.PDF版本10.12.4.1360
pdf
机器懒得学习1 天前
解析交通事故报告:利用 PDF、AI 与数据标准化技术构建智能分析系统
pdf
合合技术团队2 天前
高效准确的PDF解析工具,赋能企业非结构化数据治理
人工智能·科技·pdf·aigc·文档
jingling5552 天前
如何使用免费资源--知网篇
开发语言·经验分享·搜索引擎·pdf·开源
haha_qasim2 天前
怎么将pdf中的某一个提取出来?介绍几种提取PDF中页面的方法
前端·pdf
m0_748249542 天前
前端预览pdf文件流
前端·pdf
百年孤独_2 天前
高阶:基于Python paddleocr库 提取pdf 文档高亮显示的内容
开发语言·python·pdf
m0_748236582 天前
前端如何将pdf等文件传入后端
前端·pdf·状态模式