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

相关推荐
南风微微吹1 小时前
2026初级会计师考试历年真题及答案解析电子版pdf(2021-2025年)
pdf
weixin_441003643 小时前
教师资格证(教资)面试历年真题2017-2025全套PDF
pdf
林恒smileZAZ8 小时前
前端如何让图片、视频、pdf等文件在浏览器直接下载而非预览
前端·pdf
2501_9307077811 小时前
使用C#代码压平 PDF 表单字段
数据库·pdf·c#
daanpdf13 小时前
新高考答题卡模板PDF可打印(语文数学英语一卷二卷等)
pdf·高考
优化控制仿真模型13 小时前
【26年6月】英语四级高频核心词汇1500+历年真题pdf电子版
经验分享·pdf
曹牧13 小时前
Java:PDF文件扁平化处理
java·开发语言·pdf
奇树谦16 小时前
离线英文 PDF 翻译工具使用说明
pdf
xiaoliuliu1234516 小时前
Mendeley 2.1 文献管理软件安装教程:文献管理+PDF标注
pdf
其实秋天的枫16 小时前
【26年6月】英语四级高频核心词汇1500+历年真题pdf电子版
经验分享·pdf