【问题标题】:Change printer properties in excel macro在 excel 宏中更改打印机属性
【发布时间】:2014-07-30 01:28:00
【问题描述】:

有什么方法可以在 Excel 宏/Excel VBA 中将打印机属性更改为彩色而不是黑白?我想从宏中打印彩色,但每次我退出 excel 时,它都会将颜色设置为黑白。我希望宏在每次运行时将颜色设置回颜色。这是我用来打印的代码:

Workbooks("Book1.xlsm").Worksheets("Sheet3").PrintOut from:=1, To:=(i / 2) - 0.5

这会打印受宏影响的每一页,但它会以黑白方式打印。我已经尝试过了,但它没有改变任何东西:

Workbooks("Book1.xlsm").Worksheets("Sheet3").PageSetup.BlackAndWhite = False

如果在 vba 中无法做到这一点,我也可以使用 API 解决方案。

【问题讨论】:

  • 录制一个宏,看看它做了什么。这应该很容易。不确定您的语句语法 Workbooks("Book1.xlsm").Worksheets("DoNotDelete").PageSetup.BlackAndWhite = False
  • 我很惊讶。看这个。似乎很有用。 mrexcel.com/forum/excel-questions/…
  • 据我所知,绕过系统驱动程序的默认设置或多或少有些棘手。要更改打印机的默认设置,您需要做的是使用 Microsoft/打印机供应商 API 来获得控制驱动程序参数的功能。我可能完全错了,但对我来说,编写这个功能似乎是一个漫长的夜晚,没有睡觉,如果一个人要使用其他带有不同供应商驱动程序的打印机,它会再次失败。 A good article about this
  • 您可以使用 WMI 来判断打印机是否配置为黑白或彩色 - 但虽然非常接近,但不能更改它。 technet.microsoft.com/en-us/windows/aa394364%28v=vs.71%29.aspx
  • @mehow 仍然没有这样做,因为打印设置仍然是黑白而不是彩色,但我需要它们是彩色的,我不想每次在我运行之前手动执行此操作宏。

标签: vba excel printing


【解决方案1】:

而不是使用:

Workbooks("Book1.xlsm").Worksheets("Sheet3").PrintOut from:=1, To:=(i / 2) - 0.5

你可以使用:

Workbooks("Book1.xlsm").Worksheets("Sheet3").PrintOut

你可以跳过:

Workbooks("Book1.xlsm").Worksheets("DoNotDelete").PageSetup.BlackAndWhite = False

因为它只更改工作表设置,而不是打印设置。

但就彩色打印而言,您最好在control panel 中为同一台打印机创建两次快捷方式,并将一个设置为默认颜色,另一个设置为默认黑白。这样您就可以根据您选择的打印机指定颜色或黑白。

【讨论】:

  • 这如何回答彩色/黑白问题?
  • @brettdj 他的最后一段是关于如何解决该问题的建议(使用两台打印机指向具有不同设置的同一台机器)。这些打印机也可以通过编程方式创建和删除,但您需要管理员权限。
猜你喜欢
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多