Excel 매크로에서 프린터 속성을 변경하려면

사무실에서 사용되는 프린터는 런닝 비용 절감을 이유로 흑백 인쇄가 디폴트로 설정되어 있는 경우가 많다. (흑백과 칼라에서는 요금이 얽히 말해 10배 다르기 때문에)
Excel 매크로(VBA)를 사용하여 흑백 인쇄를 기본 프린터로 컬러 인쇄할 수 있습니까? 라고 후배군에게 물었으므로, 조금 조사해 보았다.

덧붙여 컬러 인쇄가 디폴트의 프린터에 흑백으로 인쇄하고 싶다면, Excel의 페이지 설정에 있으므로, 당연히 매크로로부터 제어 가능하다.

object.PageSetup.BlackAndWhite = True

라는 상태. 그렇지만 이것이 Excel측에서 색을 떨어뜨리고 있을 뿐이므로, 카운터 요금의 계약이라고 확실히 칼라 단가로 청구될 것 같은 생각이 들지만 실제로 어떨까・・・?

방법



하는 방법은 여러가지 있으므로, 하나씩 해설해 가자.

프린터 속성을 변경할 수없는 정책 설정 현장에서는 당연하지만 아래에 설명 된 방법은 실현할 수 없습니다. 시스템 관리자에게 문의하십시오.

WindowsAPI를 사용하는 방법



Win32API를 사용하여 DEVMODE 구조체에서 프린터 드라이버 정보를 검색하고 dmColorDMCOLOR_COLOR , dmFieldsDM_COLOR 를 설정하는 방법.
하지만 지금은 VBA에서 Win32API를 직접 두드리는 것은 시대 착오도 심하고, 코드 양이 늘어나 귀찮은 것만이므로 시도하지 않았다.

PowerShell Set-PrintConfiguration을 사용하는 방법



과거 Win32API에 의지하고 있던 기능의 대부분은 WMI에 추상화되어 간단하게 실현될 수 있게 되었다. 그리고 WMI는 WSH라는 스크립트 언어로 다루는 경우가 많았지만, 지금의 Windows 스크립팅 환경은, 보다 세련된 PowerShell로 이행하고 있다. PowerShell에서 WMI Win32_Printer/Win32_PrinterConfiguration 클래스를 호출하면 프린터 속성을 변경할 수 있을 것 같지만, PowerShell Set-PrintConfiguration
VBA에서 PowerShell 코드를 실행하려면 WScript.Shell
CreateObject("WScript.Shell").Run "PowerShell -ExecutionPolicy RemoteSigned -Command Set-PrintConfiguration -PrinterName 'プリンタ名' -Color $True", 0

일단, 기대하는 움직임이 되었지만, 매크로 바이러스라고 판정되어 버렸다.
Microsoft 지원 사이트의 단계 에 따라, 신뢰할 수 있는 장소로부터 기동해야 한다.

SendKeys 메서드를 사용하는 방법



도망가는 길로 대략 오는 SendKeys 메서드.
프린터 등록 정보 화면을 표시하고 사용자에게 변경하는 방법. 운용 부담 경감책으로서는 개미.
SendKeys "%R"
Application.Dialogs(xlDialogPrint).Show

Office2007 이후라면 CommandBars 객체에서도 가능.
Application.CommandBars.ExecuteMso "PrintPreviewAndPrint"

【본명】 컬러 인쇄용 프린터를 추가하는 방법



마지막으로 본명을 올린다.
같은 프린터 드라이버로, 컬러 인쇄용의 프린터를【Windows의 설정】에서 추가해,
object.PrintOut ActivePrinter:="プリンタ名"

하는 방법. 이것이 솔직하고 가장 문제가 일어나기 어려운 간단한 방법일 것이다.

좋은 웹페이지 즐겨찾기