문제

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 호출은 다음과 같이 인쇄 대화 상자를 숨깁니다.

  1. 인쇄 대화 상자 창의 핸들을 가져옵니다.
  2. 다시 그리지 말라고 메시지를 창에 보냅니다.
  3. 발생하지 않는 다시 그리기를 강제하는 창을 무효화합니다.
  4. Windows에 창을 다시 그리도록 지시하면 창이 사라집니다.

가볍게 말하면 지나치게 단순화되었습니다.

API 호출은 안전하지만 응용 프로그램이 실패하는 경우 인쇄 대화 상자의 화면 업데이트가 True로 설정되어 있는지 확인하고 싶을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top