2008-09-15 4 views
5

PrintOut 메서드를 사용하여 워크 시트 개체를 프린터로 인쇄하면 "인쇄"대화 상자 (파일 이름, 대상 프린터, 인쇄 된 페이지 및 취소 단추 표시)가 표시됩니다 DisplayAlerts = False로 설정 했더라도 아래의 코드는 Excel 매크로에서 작동하지만 Excel 객체를 사용하는 데 필요한 참조 변경 사항이있는 VB 또는 VB.Net 응용 프로그램에서이 코드를 사용하면 동일한 문제가 발생합니다.Excel PrintOut 메서드를 사용할 때 인쇄 대화 상자가 나타나지 않게하는 방법

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 

편집 : 대답은 아래 (는 윈도우 대화 상자가 아닌 엑셀 대화 할 수 있음)하지만 내 질문에 대답하지 않습니다이에 더 많은 빛을 흘린다. 누구든지 표시되지 않도록하는 방법을 알고 있습니까?

편집 : 추가 연구에 감사드립니다, 케빈. 이것이 내가 필요로하는 것과 매우 흡사합니다. 내가 맹목적으로 API 코드를 받아들이 길 원하지는 모르겠다. 다른 누구도이 API 호출에 대한 지식이 없으며 작성자의 의도대로 수행하고 있습니까?

답변

1

"인쇄"대화 상자를 말하면 표준 인쇄 대화 상자 (프린터, 인쇄 매수 선택) 대신 "지금 인쇄 xxx 켜기"대화 상자를 사용한다고 가정합니다. 예를 들어 & 위의 예제를 보면, 그 동작은 내가 본 것입니다. - "지금 인쇄 중 ..."이 간단히 표시되고 &이 자동으로 닫힙니다.

제어하려는 내용이 Excel에 연결되어 있지 않고 대신 Windows 수준의 동작 일 수 있습니다. 제어가 가능하면 a) 비활성화하고, b) 인쇄를 수행하고, c) 다시 활성화해야합니다. 코드가 실패하면 다른 응용 프로그램에서이 코드를 다시 사용할 수 없게 될 위험이 있습니다.

편집 : 해결책 : How do you prevent printing dialog when using Excel PrintOut method을 시도하십시오. 그것은 당신이 무엇을하고 있는지 정확하게 묘사하는 것 같습니다. 케빈 헤인즈에 의해 링크 된 문서의

+0

예, 귀하의 가정은 정확합니다. 지정하지 않아서 죄송합니다. 이 대답에 더하여,이 Excel 또는 Windows 동작 여부를 아는 사람이 있습니까? –

+0

이것은 Windows 동작입니다. –

1

이 API 호출은 인쇄 대화 상자과 같이 숨기기 :

  1. 은 인쇄 대화 상자의 핸들을 가져옵니다.
  2. 결코
  3. 이 사라지는 원인이 창을 다시 칠하기 위해 Windows에게 발생하지 않는 다시 그리기 강제로 창을 무효화 다시 그리기하지 말 것을 말할 창에 메시지를 보냅니다.

가볍게두기에는 너무 간단합니다.

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

2

인쇄 대화 상자를 표시하지 않으려면 다음과 같이 매크로 테스트를 수행하십시오. 인쇄 대화 상자를 표시하지 않고 기본 프린터를 감지하고 즉시 인쇄합니다.

sub test() 

activesheet.printout preview:= false 

end sub 

이 매크로를 실행하면 인쇄 대화 상자를 표시하지 않고 현재 활성화 된 시트가 인쇄됩니다.