使用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行代码输出相应的提示信息。

相关推荐
德育处主任Pro15 小时前
『NAS』在飞牛部署PDF全能工具-StirlingPDF
pdf·nas
其实秋天的枫17 小时前
【26大英赛】全国大学生英语竞赛C类历年真题及答案电子版PDF(2012-2025年)
经验分享·pdf
开开心心_Every17 小时前
免费轻量电子书阅读器,多系统记笔记听书
linux·运维·服务器·神经网络·安全·机器学习·pdf
优化控制仿真模型19 小时前
【26年四级最新】英语四级高频核心词汇1500+真题PDF电子版
经验分享·pdf
优化控制仿真模型20 小时前
2026年新高考英语大纲词汇表3500个电子版PDF(含正序版、乱序版和默写版)
经验分享·pdf
sun03221 天前
使用Python把目录下的所有图片,合并成一个PDF
pdf
Ofm1z1Q9R2 天前
python-langchain框架(3-5-pdf文件load_and_split()加载 )
python·langchain·pdf
开开心心_Every2 天前
实用PDF擦除隐藏信息工具,空白处理需留意
运维·服务器·网络·pdf·电脑·excel·依赖倒置原则
偶尔贪玩的骑士3 天前
Jupyter Notebook导出带中文字体PDF
ide·jupyter·pdf
软件工程小施同学3 天前
国家数据基础设施标准、技术文件汇总(附pdf下载)
pdf