프린터 객체를 설정할 때 "잘못된 절차 호출 또는 인수"

StackOverflow https://stackoverflow.com/questions/737702

  •  09-09-2019
  •  | 
  •  

문제

프로그램이 프린터 컬렉션에서 프린터 객체를 특정 프린터로 설정하려고 시도 할 때 오류 5, "유효하지 않은 절차 호출 또는 인수"를 제공하는 VB6 응용 프로그램이 있습니다. 문제의 프린터는 인쇄 서버를 통해 실행되는 일종의 복사기/프린터입니다. 프린터 객체를 컬렉션에 정의 된 다른 프린터로 설정할 때 오류가 발생하지 않습니다. 이 상황에서 오류 5를 일으킬 수있는 아이디어가 있습니까? VB6에서 "Set Printer = X"문을 사용할 때 정확히 무슨 일이 일어나는지 잘 모르겠습니다. 해당 시점에서 실제 프린터 드라이버와 인터페이스하려고합니까? 드라이버가 어떤 이유로 vb6 프린터 객체에 의해 유효한 프린터로 인식되지 않아 "잘못된 인수"오류가 발생할 수 있습니까?

도움이 되었습니까?

해결책

"잘못된 절차 호출 또는 인수"는 VB 런타임 오류 5에 대한 것입니다.

당신이보고있는 오류 5가 Win32 오류 코드라고 생각합니다. 이는 "액세스가 거부된다"는 것을 의미합니다.

분명히 VB 런타임 오류는 Win32 오류와 다릅니다. VB의 뿌리와 관련이 있다고 생각합니다. http://blogs.msdn.com/ericlippert/archive/2004/09/09/227461.aspx. 언제 사용할 것인지 결정 해야하는지 잘 모르겠습니다.

다른 팁

이와 같은 코드를 사용하여 올바르게 설정하고 있습니까? 문자열로 설정하려고하는 것이 아니라?

   Dim strDeviceName As String
   Dim prnCurrent    As Printer

   For Each prnCurrent In Printers

      If UCase$(prnCurrent.DeviceName) = strDeviceName Then

         Set Printer = prnCurrent

         Exit For

      End If

   Next prnCurrent 

기본 프린터 변경을 중지하려면 프린터를 설정하기 전에이 코드를 실행합니다. 그런 다음 기본 프린터를 다시 설정하지 않아도됩니다. 이것은 또한 당신의 프린터 선택을 프로그램에 독특하게 만듭니다. 이는 대부분의 사람들이 원하는 것입니다.

' deassociate printer object from default system printer
Printer.TrackDefault = False

프린터 이름과 함께 서버 이름을 포함하여 MS Access 2007 VBA 에서이 문제를 해결했습니다.

Application.Printer = Application.Printers("\\servername\printername")

대신에

Application.Printer = Application.Printers("printername")

이것이 다른 사람을 돕기를 바랍니다.

나는이 오류를 얻었고 두 시간의 좌절 후에 내 대답을 발견했다. 사례 민감한 문제였습니다. 나는 소문자 "S"를 가졌을 때 자본 "S"를 가졌습니다.

따라서 코드가 다음과 같이 보였을 때 :

XeroxReport = "\\Share\Red Xerox 430"
Set Application.Printer = Application.Printers(XeroxReport)

오류 5를 얻을 수 있습니다

그러나 내가 그것을 변경했을 때 :

XeroxReport = "\\share\Red Xerox 430"
Set Application.Printer = Application.Printers(XeroxReport)

프레스토 그것은 일했다

다음 페이지를 살펴볼 수 있습니다.

http://support.microsoft.com/kb/322710

VB6에서 인쇄 할 때마다 VB6과 함께 제공되는 일반적인 대화 상자 대신 항상이 대화 상자를 사용합니다. 훨씬 더 신뢰할 수 있습니다.

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