Excel PrintOut 방법을 사용할 때 인쇄 대화 상자를 어떻게 방지합니까?
-
09-06-2019 - |
문제
PrintOut 메서드를 사용하여 워크시트 개체를 프린터로 인쇄할 때 DisplayAlerts = False로 설정했는데도 "인쇄 중" 대화 상자(파일 이름, 대상 프린터, 인쇄된 페이지 및 취소 버튼 표시)가 표시됩니다.아래 코드는 Excel 매크로에서 작동하지만 VB 또는 VB.Net 응용 프로그램에서 이 코드를 사용하는 경우에도 동일한 현상이 발생합니다(Excel 개체를 사용하는 데 필요한 참조 변경 사항 포함).
Public Sub TestPrint()
Dim vSheet As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set vSheet = ActiveSheet
vSheet.PrintOut Preview:=False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
편집하다:아래 답변은 이에 대해 더 많은 정보를 제공하지만(Excel 대화 상자가 아닌 Windows 대화 상자일 수 있음) 내 질문에 대한 대답은 아닙니다.표시되지 않게 하는 방법 아시는 분 계신가요?
편집하다:추가 조사에 감사드립니다, Kevin.이것이 나에게 꼭 필요한 것 같습니다.그런 API 코드를 맹목적으로 받아들이고 싶은지는 잘 모르겠습니다.이러한 API 호출과 작성자가 주장하는 작업을 수행하고 있다는 사실을 아는 사람이 있습니까?
해결책
"인쇄 중" 대화 상자를 말할 때 표준 인쇄 대화 상자(프린터 선택, 매수 등)가 아닌 "지금 인쇄 중 xxx" 대화 상자를 의미한다고 가정합니다.위의 예를 들어 시험해 보면 이것이 제가 본 동작입니다. "지금 인쇄 중..."이 잠시 표시되었다가 자동으로 닫힙니다.
제어하려는 항목은 Excel에 연결되지 않고 Windows 수준 동작일 수 있습니다.제어 가능한 경우 a) 비활성화하고, b) 인쇄를 수행하고, c) 다시 활성화해야 합니다.코드가 실패하면 다른 애플리케이션에서 코드가 다시 활성화되지 않을 위험이 있습니다.
편집하다:다음 해결 방법을 시도해 보세요. Excel PrintOut 방법을 사용할 때 인쇄 대화 상자를 어떻게 방지합니까?.그것은 당신이 추구하는 것이 무엇인지 정확하게 설명하는 것 같습니다.
다른 팁
인쇄 대화 상자를 표시하지 않으려면 다음과 같이 매크로 테스트를 수행하면 됩니다.인쇄 대화 상자가 표시되지 않으며 기본 프린터를 감지하여 즉시 인쇄합니다.
sub test()
activesheet.printout preview:= false
end sub
이 매크로를 실행하면 인쇄 대화 상자를 표시하지 않고 현재 활성 시트를 인쇄합니다.
Kevin Haines가 링크한 기사의 API 호출은 다음과 같이 인쇄 대화 상자를 숨깁니다.
- 인쇄 대화 상자 창의 핸들을 가져옵니다.
- 다시 그리지 말라고 메시지를 창에 보냅니다.
- 발생하지 않는 다시 그리기를 강제하는 창을 무효화합니다.
- Windows에 창을 다시 그리도록 지시하면 창이 사라집니다.
가볍게 말하면 지나치게 단순화되었습니다.
API 호출은 안전하지만 응용 프로그램이 실패하는 경우 인쇄 대화 상자의 화면 업데이트가 True로 설정되어 있는지 확인하고 싶을 것입니다.