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

相关推荐
AI导出鸭PC端3 天前
Perplexity批量导出没有PDF模式?AI导出鸭插件补上最后一块拼图
人工智能·pdf·c#·ai导出鸭
Ravenq~3 天前
无头转换:把 .docx 变成 PDF,不打开编辑器
pdf·编辑器
联犀4 天前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
FinelyYang7 天前
uniapp使用kkfileview在线预览ppt,excel,word,pdf类型文件
pdf·uni-app·powerpoint
WORLDPO92268 天前
QTE-020-01-L/F/C-D-A-K-TR_实物_数据手册PDF_国产替代
pdf
asdzx678 天前
C# 操作 PDF 元数据:从属性写入到字段提取的完整流程
前端·pdf·c#
WORLDPO92268 天前
SFSDT-10/15/20/25/35-28-G-19.69-SR_实物图_数据手册PDF_国产替代
pdf·pcb工艺·pcb
梦想出海-Phoebe8 天前
Gemini新增文件编辑功能:PDF、Word、Excel处理体验分享
pdf·word·excel
开开心心就好8 天前
网页图片批量下载工具,输入链接就保存
服务器·算法·leetcode·支持向量机·pdf·ocr·1024程序员节
汤姆宝库9 天前
法考历年真题及答案解析合集pdf版(2002-2025年)
pdf·法考