Excel 매크로에서 프린터 속성을 변경하려면
3513 단어 프린터PowerShellExcelVBAWin32API
Excel 매크로(VBA)를 사용하여 흑백 인쇄를 기본 프린터로 컬러 인쇄할 수 있습니까? 라고 후배군에게 물었으므로, 조금 조사해 보았다.
덧붙여 컬러 인쇄가 디폴트의 프린터에 흑백으로 인쇄하고 싶다면, Excel의 페이지 설정에 있으므로, 당연히 매크로로부터 제어 가능하다.
object.PageSetup.BlackAndWhite = True
라는 상태. 그렇지만 이것이 Excel측에서 색을 떨어뜨리고 있을 뿐이므로, 카운터 요금의 계약이라고 확실히 칼라 단가로 청구될 것 같은 생각이 들지만 실제로 어떨까・・・?
방법
하는 방법은 여러가지 있으므로, 하나씩 해설해 가자.
프린터 속성을 변경할 수없는 정책 설정 현장에서는 당연하지만 아래에 설명 된 방법은 실현할 수 없습니다. 시스템 관리자에게 문의하십시오.
WindowsAPI를 사용하는 방법
Win32API를 사용하여 DEVMODE 구조체에서 프린터 드라이버 정보를 검색하고 dmColor
에 DMCOLOR_COLOR
, dmFields
에 DM_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:="プリンタ名"
하는 방법. 이것이 솔직하고 가장 문제가 일어나기 어려운 간단한 방법일 것이다.
Reference
이 문제에 관하여(Excel 매크로에서 프린터 속성을 변경하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mindwood/items/c4f1059fd046173fe551
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
CreateObject("WScript.Shell").Run "PowerShell -ExecutionPolicy RemoteSigned -Command Set-PrintConfiguration -PrinterName 'プリンタ名' -Color $True", 0
SendKeys "%R"
Application.Dialogs(xlDialogPrint).Show
Application.CommandBars.ExecuteMso "PrintPreviewAndPrint"
object.PrintOut ActivePrinter:="プリンタ名"
Reference
이 문제에 관하여(Excel 매크로에서 프린터 속성을 변경하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mindwood/items/c4f1059fd046173fe551텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)