前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA: 获取电脑当前默认打印机的名称

VBA: 获取电脑当前默认打印机的名称

作者头像
Exploring
发布2022-09-20 14:39:49
2.4K0
发布2022-09-20 14:39:49
举报
文章被收录于专栏:数据处理与编程实践

文章背景:通过Printout函数,可以将Excel文件转换为pdf文件,但与此同时,该函数可能会通过ActivePrinter参数将默认打印机修改为Microsoft Print to PDF。借助Application.ActivePrinter属性,一方面可以查询当前默认打印机的名称,另一方面,也可以指定默认打印机的名称。

(1) Application.ActivePrinter

Returns or sets the name of the active printer. Read/write String.

(2) 代码示例

代码语言:javascript
复制
Option Explicit

Sub getPrinterName()

    Dim Printer_original As String
    
    Dim Path As String, path_saved As String, name_file As String
    
    '1 记录最开始的默认打印机
    Printer_original = Application.ActivePrinter
    
    '2 将一份excel文件转化为pdf文件
    Path = "E:\工作\报告展示\1.xlsx"
    path_saved = "E:\工作\报告展示\1.pdf"
    name_file = "1.xlsx"
    
    Workbooks.Open (Path)
        
    ActiveWorkbook.Worksheets(1).PrintOut copies:=1, preview:=False, ActivePrinter:="Microsoft Print to PDF" _
        , PrintToFile:=True, PrToFileName:=path_saved, IgnorePrintAreas:=False
        
    Workbooks(name_file).Close False
    
    '3 恢复默认的打印机
    Application.ActivePrinter = Printer_original
    
End Sub

该代码主要分为三步:(1)先记录当前默认打印机的名称,一般电脑默认连接的是实体打印机;(2)借助Printout函数将指定的Excel文件转换为PDF文件,此时默认打印机的名称已经发生变化,转变成了Microsoft Print to PDF; (3)恢复默认的打印机,也就是第(1)步保存的打印机名称。

参考资料:

[1] Application.ActivePrinter property(https://docs.microsoft.com/en-us/office/vba/api/excel.application.activeprinter

延伸阅读:

[1] VBA: Excel文件批量转化为pdf (2)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档