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

相关推荐
DevOpenClub40 分钟前
PDF 多格式解析如何避免混用输出:TEXT、HTML、XML 与 TAG 数据契约
xml·前端·数据库·pdf·html
DevOpenClub2 小时前
网页证据如何长期复核:快照、静态 HTML 与 PDF 归档链路
前端·pdf·html
拆房老料5 小时前
LibreOffice 26.8 发布后,再看 BaseMetas FileView 的 Office 转 PDF 技术路线
pdf·word·开源软件·ppt·格式工厂
开开心心就好5 小时前
手机悬屏翻译工具外语游戏漫画APP全覆盖
android·前端·javascript·python·游戏·pdf·html
redfred6 小时前
Koodo Reader 使用教程:开源电子书阅读器 epub/pdf/mobi/azw3 全格式 多端同步 AI翻译 笔记高亮
人工智能·pdf·开源
Metaphor6926 小时前
如何在 Python 环境中裁剪 PDF 页面
python·pdf
开开心心就好6 小时前
手机精确倒计时工具悬浮窗口秒数实时显示
android·前端·javascript·jupyter·智能手机·pdf·html
jayson.h1 天前
python——pdf编辑
前端·python·pdf
MaiTube&Maipdf1 天前
MaiPDF 在线分享
pdf
Metaphor6921 天前
使用 Python 快速拆分 PDF 文件
python·pdf