excel - 在另存为提示失败后更改 Application.ActivePrinter 的 Workbook_Open() 代码
问题描述
此代码应该更改打印机,但只运行另存为提示。我的用户是忙碌的农场工人,因此必须在没有他们干预的情况下更换打印机。此代码的原因是在此工作簿之前使用了 Zebra 标签打印机,除非更改打印机,否则此工作簿的视图会变得一团糟。单元格 B27 位于一个表格中,该表格会根据所使用的计算机自动调整 B27 结果。
Private Sub Workbook_Open()
On Error Resume Next
Application.EnableEvents = False
Dim bFileSaveAs As Boolean
bFileSaveAs = Application.Dialogs(xlDialogSaveAs).Show
Application.EnableEvents = True
Application.ActivePrinter = Sheet3.Range("B27").Value
Application.EnableEvents = True
Application.SendKeys "{Escape}", True
Application.SendKeys "{NUMLOCK}", True
End Sub
解决方案
据我所知,问题是您需要在活动打印机语句中包含打印机使用的端口。这是一个有用的链接:
https://www.mrexcel.com/board/threads/changeing-the-active-printer-in-a-macro.1021932/
我进行了测试以确保使用 Microsoft Print to PDF 作为打印机。我将用于从模块中的链接查找打印机的代码放在我的 VBA 代码上方(由于开头的私有声明)。我将实际查找打印机的功能放在一个按钮上:
Private Sub CommandButton2_Click()
ShowPrintersAndPorts
End Sub
返回的是
“NE01 上的 Microsoft 打印到 PDF:”
我把它放在你使用的单元格中并运行你的代码,一切都很完美。需要注意的主要一点是,您必须将端口放在来自 B27 的值的末尾。一旦你知道端口是什么样的,你就可以通过代码来做到这一点:
Application.ActivePrinter = Sheet3.Range("B27").Value & " on NE01:"
当然,您必须将 NE01: 替换为您的打印机正在使用的端口。希望这可以帮助!
推荐阅读
- node.js - 数据验证停止工作 multipart/form-data
- android - 在回收站视图中查看寻呼机
- python - 当第二个矩阵只有一列时,矩阵乘法会引发错误
- php - 查找 IF 语句的哪个 $_POST 变量为空
- python - 检查字符串中的字符是否与列表的索引范围匹配?
- php - 如何通过ajax重命名下载的文件
- c - 我不知道如何让我的程序读取文件
- angularjs - 如何在 AngularJs 常量中使用全局常量
- html - 如果单击更改按钮,为什么背景颜色没有改变?
- python - 加速 Ising-/Potts-Model Monte-Carlo 的 Python/Numpy 代码