当前位置: 首页 > news >正文

使用VBA打印PDF文件

使用VBA打印工作表和工作簿文件都很容易实现,但是有时需要使用VBA打印已经保存在本机的其他文件,例如PDF文件格式的账单,如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。

调用Windows的Shell命令可以实现打印PDF文件。

示例代码如下。

#If VBA7 And Win64 ThenPrivate 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
#ElsePublic 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 IfSub PrintPDFUsingAPI()Dim PDFPath As String, resultPDFPath = "d:\temp\test.pdf"result = ShellExecute(0, "print", PDFPath, 0&, 0&, 0)If result > 32 ThenMsgBox "打印命令已发送至默认打印机。"ElseMsgBox "无法执行打印命令。"End If
End Sub

【代码解析】
第1~9行代码声明Windows API函数,这里使用了条件编译,以便于适配32位和64位Office软件。
第13行代码指定PDF文件的全路径。
第14行代码打印PDF文件。
如果API执行成功返回值为32,第15行代码判断返回值,第16行和18行代码输出相应的提示信息。

http://www.lryc.cn/news/217261.html

相关文章:

  • 分布式ID系统设计(2)
  • http和https的区别,以及https涉及到的加密过程
  • 使用php打印时间精确到毫秒及毫秒转成11位时间戳
  • uni-app离线打包在android studio创建的.jks证书,签名文件获取MD5问题
  • 333333333333
  • Python:字符串格式化
  • 虹科示波器 | 汽车免拆检修 | 2010款江铃陆风X8车发动机怠速抖动、加速无力
  • 左和右,激进与保守,都是相对概念,但是都会滑向同一种
  • js中的遍历
  • Python算法——快速排序
  • 操作系统备考学习 day12 (第五章)
  • Elasticsearch删除映射类型
  • 网络工程师进阶课:华为HCIP认证课程介绍
  • 单行自动横向滚动——css实现
  • 多线程基础
  • 贝锐向日葵亮相阿里云“云栖大会”:独创专利算法赋能全新云桌面
  • QT在线安装5.15之前的版本(下载速度飞快)
  • 零日漏洞预防
  • 企业内部外网向内网传输文件如何实现高效安全?
  • C++--二叉搜索树初阶
  • Type List(C++ 模板元编程)
  • 使用老北鼻CharGPT对话查询 Qt/C++ 使用gumbo-parse解析加载的html全过程
  • ​ iOS App Store上传项目报错 缺少隐私政策网址(URL)解决方法
  • 设计模式第一课-单例模式(懒汉模式和饿汉模式)
  • Yaml文件详解
  • 【题解 线段树】[蓝桥杯 2022 省 A] 选数异或
  • 宠物喂食器方案智能开发设计
  • chatgpt综述阅读理解
  • XCTF-RSA-2:baigeiRSA2、 cr4-poor-rsa
  • js 根据word文档模板导出内容