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

相关推荐
Jack.Huangjh4 小时前
ABAP PDF
pdf
北极象5 小时前
Flying-Saucer HTML到PDF渲染引擎核心流程分析
前端·pdf·html
一只酸奶牛^_^6 小时前
java实现pdf添加水印
java·pdf
还是叫明7 小时前
将PDF每一页导出一张图片(C#,.NET)
pdf
E_ICEBLUE10 小时前
Python 实现 PDF 表单域的自动化创建与智能填充
python·pdf·自动化·表单域
莫非技术栈20 小时前
51AI工具集:网站更新了图片工具、PDF工具、视频工具、音频工具
pdf
御坂10101号2 天前
爱泼斯坦文件技术细节:伪扫描、元数据清洗与撤销涂黑
图像处理·pdf·ocr
羑悻的小杀马特2 天前
本地PDF处理神器Stirling - PDF搭配cpolar
网络协议·pdf·电脑·cpolar
xiaoliuliu123453 天前
Foxit_PDFOEM_xp85安装步骤详解(附PDF阅读与表单填写教程)
pdf
MaiTube&Maipdf3 天前
控制PDF外发教程:麦瓜PDF 3步设权限
pdf