通过 VBA 设置默认打印机

2024-03-12

我正在运行一个在两台打印机之间切换的 Excel 宏,一台名为“RecOffice_Pink”,另一台名为“RecOffice_White”。

这是解决 VBA 无法轻松指定打印托盘问题的一个巧妙的解决方法。粉红色打印机除了一个纸盘之外的所有纸盘都被禁用,其中包含我们的粉红色纸张。

我在用

CreateObject(WScript.Network).SetDefaultPrinter "RecOffice_Pink"
and
CreateObject(WScript.Network).SetDefaultPrinter "RecOffice_White"

这在我们的 Windows 7 电脑上运行得很好,但它似乎不适用于我们的任何 Windows 10 电脑。

没有抛出错误,没有创建消息,只是似乎没有切换打印机。

我尝试过将它们设置为我们网络上的共享打印机,并在每台计算机上设置它们,这两种方法都可以在 Windows 7 上正常运行。


Usage

  SetDefaultPrinter "RecOffice_Pink"

设置默认打印机

 Sub SetDefaultPrinter(PrinterName As String, Optional ComputerName As String = ".")
    Dim Printer As Object, Printers As Object, WMIService As Object
    Set WMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & ComputerName & "\root\cimv2")
    Set Printers = WMIService.ExecQuery("Select * from Win32_Printer Where Name = '" & PrinterName & "'")

    For Each Printer In Printers
        Printer.SetDefaultPrinter
    Next

End Sub

列出新工作簿中的打印机和打印机属性

Sub ListPrinters(Optional ComputerName As String = ".")
    Dim WMIService As Object
    Set WMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & ComputerName & "\root\cimv2")

    Dim Printers As Object
    Set Printers = WMIService.ExecQuery("Select * from Win32_Printer")

    Dim Printer As Object
    Dim Item As Object
    Dim Results
    Dim r As Long, c As Long, NameIndex As Long
    For Each Printer In Printers
        ReDim Results(1 To Printers.Count + 1, 1 To Printer.Properties_.Count)
        r = 1
        For Each Item In Printer.Properties_
            c = c + 1
            If Item.Name = "Name" Then NameIndex = c
            Results(r, c) = Item.Name
        Next
        Exit For
    Next

    For Each Printer In Printers
        r = r + 1
        c = 0
        For Each Item In Printer.Properties_
            c = c + 1
            Results(r, c) = Item.Value
        Next
    Next

    Dim SheetsInNewWorkbook As Long
    SheetsInNewWorkbook = Application.SheetsInNewWorkbook
    Application.SheetsInNewWorkbook = 2
    With Workbooks.Add
        With Worksheets(1)
            .Range("A1").Resize(UBound(Results), UBound(Results, 2)).Value = Results
            .Columns(NameIndex).Cut
            .Columns(1).Insert Shift:=xlDown
            .ListObjects.Add(xlSrcRange, .Range("A1").CurrentRegion, , xlYes).Unlist
            .Columns.AutoFit
            .Range("A1").CurrentRegion.Copy
        End With
        With Worksheets(2)
            .Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
            Application.CutCopyMode = False
            .Columns.AutoFit
        End With
    End With
    Application.SheetsInNewWorkbook = SheetsInNewWorkbook
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 VBA 设置默认打印机 的相关文章

  • 从嵌入的谷歌地图中提取标记坐标

    对此还很陌生 所以请耐心等待 我需要从嵌入的谷歌地图中提取标记坐标 示例链接是http www picknpay co za store search http www picknpay co za store search我想提取搜索时地
  • Outlook 中用于删除重复电子邮件的宏 -

    Public Sub RemDups Dim t As Items i As Integer arr As Collection f As Folder parent As Folder target As Folder miLast As
  • 在 Django(Python) 中向用户提供 Excel(xlsx) 文件下载

    我正在尝试使用 Django 创建和提供 Excel 文件 我有一个 jar 文件 它获取参数并根据参数生成 excel 文件 并且它可以正常工作 但是 当我尝试获取生成的文件并将其提供给用户下载时 文件损坏了 它的大小为 0kb 这是我用
  • 获取给定日期的周数

    例子 DD MM YYYY 1 1 2009 should give 1 31 1 2009 should give 5 1 2 2009 should also give 5 Format 1 2 2009 ww 回报6 那么 怎样才能得
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • 这个 if 语句中怎么有太多参数

    My IF下面的声明不断错误射击 指出参数太多 为什么是这样 谁能看出下面的语句有什么错误吗 IF G7 EUR H7 1 15 L7 IF G7 USD H7 1 35 L7 IF G7 AUD H7 1 35 L7 IF G7 CAD
  • 参考上一个问题:为什么 VBA 没有加载所有发票详细信息

    除了上一个问题之外 我们在销售发票上仍然存在相同的加载失败问题 下面的 VBA Json 仍然仅加载一行或第一个产品详细信息行 而不是与表中该销售发票合作的所有产品行详细信息 我们希望下面的 VBA 能够根据参数加载发票详细信息 例如 如果
  • 二维数组作为字典的项目

    我想用一个项目的几个属性填充字典 例子 我正在考虑拥有Item 1 and Item 2 as Dictionary键与array这将保留其属性 我需要能够单独访问项目的每个属性 因此将它们连接为一个字符串不是一种选择 我正在考虑类似下面的
  • 导入到 SQL Server 时忽略 Excel 文件中的列

    我有多个具有相同格式的 Excel 文件 我需要将它们导入 SQL Server 我当前遇到的问题是 有两个文本列我需要完全忽略 因为它们是自由文本 并且某些行的字符长度超出了服务器允许我导入的长度 这会导致截断错误 因为我的分析不需要这些
  • 强制刷新工作表的“最后一个”单元格

    Pressing Ctrl End in Excel takes you to the bottom right most cell of the worksheet 如果删除最后的行或列并保存工作簿 最后一个单元格以及滚动条都会更新 我记
  • 从VBA中的数组批量插入到sql中

    我正在尝试在 Excel 中构建一个按钮 将所选区域上传到 SQL Server 中的表中 第一行将自动视为列标题 这件事该怎么继续下去呢 我想要的是简单和超快的上传 这是我的想法 我将选择选定的区域 然后将其保存为 txt 文件 然后对其
  • Wkhtmltopdf 每页右侧的垂直文本

    下面是使用 wkhtmltopdf 生成的 PDF 示例 我需要在每一页的右书脊上生成文本 我尝试将其添加到标题代码中 似乎会剪辑 PDF 的正文 我正在使用 wkhtmltopdf 的页眉和页脚参数 不太确定如何或是否可以在每个页面的右侧
  • 在 Perl 中如何打印到变量而不是文件?

    如何使用 Perl 打印到变量 我已经在一个程序上工作了一段时间 它记录了它的迭代的以非常详细的方式取得进展 print loghandle some message 但是 我还想有选择地将一些消息打印到不同的文件中 当然 我可以在代码中添
  • 消除多个 Elseif 语句

    我试图保持我的代码干净 特别是在用户表单中使用组合框 可能会有很多 if Elseif 语句 应该有一种更简单的方法 让一个组合框不再需要多页代码 是吗 现在如何完成的示例 Sub Example Dim Variable as Strin
  • 如何在 Linux 中向热敏打印机发送 ESC/POS 命令

    我正在尝试在热敏打印机上发送 ESC POS 命令 但每当我发送它们时 热敏打印机都会将它们打印为文本 而不是作为命令执行它们 我在 prn 文件中编写这些命令 每当我执行 lp 命令来打印文件时 这些 prn 文件也会被打印 但作为文本
  • 在Excel中显示毫秒

    我正在尝试在 Excel 宏中显示毫秒 我有一列整数 它们是以毫秒为单位的时间戳 例如 28095200 是上午 7 48 15 200 我想在它旁边创建一个新列 以保持运行平均值并以hh mm ss 000格式 Dim Cel As Ra
  • 在 Python 中绘制 Excel 中的数据

    我必须从 Excel 文件中读取和绘制数据的代码是这样的 import pandas as pd import matplotlib pyplot as plt excel file file1 xlsx file1 pd read exc
  • Excel Add In - console.log 在哪里输出它的消息 - NodeJS

    我正在尝试使用 JavaScript API 创建 Excel 插件 但我不明白 console log 在哪里输出它们的消息 所有 Microsoft 文档都包含 console log 示例 但没有解释 console log 输出消息
  • Excel,多个 IF AND 更高效的公式

    我正在制作一个电子表格 如下所示 Index Diff Exc Sym Sec Result Criteria Met 3 42 2 07 0 86 0 92 1 83 1 95 0 38 2 93 0 87 0 23 2 01 0 09
  • VB FFT - 难以理解结果与频率的关系

    试图理解我正在使用的 fft 快速傅里叶变换 例程 窃取 回收 输入是 512 个数据点的数组 它们是样本波形 测试数据生成到该数组中 fft 将该数组变换到频域 尝试理解频率 周期 采样率和 fft 数组中位置之间的关系 我用例子来说明

随机推荐

  • Julia 中的并行梯度计算

    不久前我被说服放弃我舒适的 matlab 编程并开始使用 Julia 编程 我已经在神经网络方面工作了很长时间 我认为现在有了 Julia 我可以通过并行计算梯度来更快地完成工作 不需要一次性对整个数据集计算梯度 相反 我们可以拆分计算 例
  • SQL 中的标准差命令

    在 C 中从数据库检索数据后 我必须实现标准差 我必须从字段名称中检索一组值income其中性别是male or female 有没有直接计算标准差的SQL命令 或者我应该使用 C 单独计算它 Try the STDEV http msdn
  • 将 C++ 字符串变量转换为 long

    我有一个变量 string item 它在运行时初始化 我需要将其转换为长 怎么做 我尝试过 atol 和 strtol 但对于 strtol 和 atol 总是分别出现以下错误 cannot convert std string to c
  • 模板 typedefs - 你的工作是什么?

    C 0x 有模板别名 有时称为模板类型定义 看here http en wikipedia org wiki C 2B 2B0x Alias templates 当前的 C 规范没有 您喜欢用什么来解决问题 容器对象还是宏 你觉得值得吗 您
  • jQuery Mobile 使用 AJAX 数据增长文本区域

    我正在通过以下方式将文本加载到输入框 textarea val ajaxData 但是它不会自动增长 并且我的数据未完全显示 有什么方法或任何东西可以调用来强制更新吗 确实有一个内部函数负责调整大小 称为resizeCheck 但是 该函数
  • 如何使用 Javascript/Jquery 添加子元素

    我需要一位帮助 我需要使用 Javascript Jquery 中的按钮单击来添加子元素 我将在下面解释我的代码 div class form group div
  • RMarkdown / pandoc 无法使用乳胶颜色命令编织 Pdf

    Mac 操作系统 10 11 6 R版本 3 3 1 MacTex 2016 TexLive 6 2 2 RMarkdown 1 0 9014 针织 1 14 潘多克 1 17 当乳胶命令如下时 RMarkdown 无法编织 PDF tex
  • 如何将参数传递给使用“include”呈现的PHP模板?

    需要 PHP 模板方面的帮助 我是 PHP 新手 我来自 Perl Embperl 无论如何 我的问题很简单 我有一个小模板来渲染一些项目 让它成为一篇博客文章 我知道使用此模板的唯一方法是使用 include 指令 我想在遍历所有相关博客
  • DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER 错误

    我的包由动态数据库连接组成 当我运行我的包时 它抛出类似 DTS E CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER 的错误 对连接管理器 conn 的 AcquireConnection 方法调用
  • Bash:当子脚本捕获 SIGINT 时,为什么父脚本不会在 SIGINT 上终止?

    脚本1 sh bin bash script2 sh echo after script 脚本2 sh bin bash function handler exit 130 trap handler SIGINT while true do
  • Hibernate使用PostgreSQL序列不影响序列表

    我已将 Hibernate 配置为使用 PostgreSQL 序列 通过注释 来生成主键值id栏目如下 Id SequenceGenerator name pk sequence sequenceName entity id seq Gen
  • Tapestry 5.4:如何使用外部 dist 包?

    我想使用 swagger ui 中的 dist 包来公开我的 web 服务 dist pkg 位于此处 https github com swagger api swagger ui tree master dist https githu
  • 核心数据不保存对 Transformable 属性的更改

    我正在保存一个NSMutableArray在我的核心数据存储中的 Transformable 属性中 我可以使用中的数据正确创建实体NSMutableArray然后将其从属性中加载出来 甚至进行更改 当我浏览我的应用程序并重新访问它时 我的
  • 如何在jsp中显示从dao获取的数据

    in jsp table width 100 border 0 cellspacing 2 cellpadding 2 tr class tab highlighted 2 td class tab highlighted 2 width
  • 如何创建php调度进程?

    我被要求创建一个网络应用程序 它将在特定时间内向用户发送更新 例如 2009 年 6 月至 8 月期间 user1 每 5 分钟请求一次更新 user2 仅今天每 10 分钟请求一次更新 从 2009 年 6 月到 8 月 user3 每
  • 当我使用 Tomcat 7 JDBC 连接池取消部署 Web 应用程序时,为什么连接仍然存在?

    我已经将一个最小的 Spring Web 应用程序部署到 Tomcat 7 0 22 它由几个页面 一个控制器 一个服务和一个 DAO 组成 该 DAO 有一个运行 SELECT 查询的方法 Web 应用程序配置为使用新的Tomcat JD
  • 访问带有向量索引的矩阵

    我有一个矩阵 a 16x3 和一个向量 b 16x1 b 显示矩阵 a 中每行有多少个有效值 a magic 3 a 8 1 6 3 5 7 4 9 2 b 1 3 2 b 1 3 2 我想做的是将无效值设置为 NaN a b 1 end
  • 活动滚动时绘制面板边框

    当我尝试制作面板边框时 我遇到了问题 首先我将属性面板设置为 自动滚动 真 然后我将边框绘制代码放在面板事件中 ControlPaint DrawBorder e Graphics ClientRectangle Color Black 5
  • 需要 FLAG_ACTIVITY_NEW_TASK 澄清

    所以我的问题是 我启动 App1 打开 Screen1 然后打开 Screen2 我按 Home 键 将 App1 留在后台 我打开 App2 并启动 App1 Screen1FLAG ACTIVITY NEW TASK https dev
  • 通过 VBA 设置默认打印机

    我正在运行一个在两台打印机之间切换的 Excel 宏 一台名为 RecOffice Pink 另一台名为 RecOffice White 这是解决 VBA 无法轻松指定打印托盘问题的一个巧妙的解决方法 粉红色打印机除了一个纸盘之外的所有纸盘