2014-12-02 2 views
0

COM을 사용하여 Microsoft Excel 2010을 시작하고 통합 문서를 연 다음 PDFCreator를 통해 인쇄하는 64 비트 Windows 2012 R2 서버에서 IBM Domino 9.0에서 실행되는 LotusScript 코드가 있습니다. (PDFForge에서) 통합 문서를 PDF로 변환합니다.
IBM Domino가 SYSTEM 사용자로 서비스로 실행 중이므로 Excel 및 PDFCreator도 내 코드로 시작할 때 해당 사용자로 실행됩니다."프린터가 설치되지 않았습니다"COM을 통해 Excel에서 인쇄

2 일 전까지 정상적으로 작동했는데, PDFCreator는 내가 결정한 이유없이 실행을 시작했습니다.

고객을위한 관리자 중 한 명이 Excel과 PDFCreator를 다시 설치했으며 Windows 사용자 프로필도 삭제했습니다 (어떤 사용자인지는 모르지만). 이제는 PDFCreator가 정상적으로 시작되었지만 Excel에는 몇 가지 문제가 있습니다.

가 내 코드와 OS 파일 시스템의 변경으로 일부 엑셀 문제를 해결하지만, 내 코드는 통합 문서를 인쇄 할 수 Excel을 말할 때 문제가 지금,이 오류가 발생합니다

Microsoft Excel: No printers are installed. To install a printer click the File tab, and then click Print. 
Click No Printers Installed, and then click Add Printer. Follow the instructions in the Add Printer dialog box.

이 오류 만 내 코드로 인쇄하려고 할 때 발생합니다.
관리자 권한으로 Excel을 시작하고 인쇄 대화 상자에서 사용할 수있는 세 대의 프린터 (PDFCreator 포함)를 사용하여 수동으로 인쇄 할 수 있습니다.

프린터가 SYSTEM 사용자에게는 보이지 않는 것처럼 보이지만이를 확인하거나 수정하는 방법을 모릅니다.
어떻게해야합니까?

몇 가지 코드가 이어집니다. 간결함을 위해 오류 처리 및 기타 사항을 제거했습니다.

다음 코드

은을 PDFCreater을 시작합니다

Set pdfCreator=CreateObject("PDFCreator.clsPDFCreator") 
If pdfCreator.cStart("/ClearCache /NoProcessingAtStartup") Then 
    pdfCreator.cClearCache 
    pdfCreator.cOption("PrinterTemppath")=pdfTmpDir 
    pdfCreator.cOption("UseAutosave")=1 
    pdfCreator.cOption("UseAutosaveDirectory")=1 
    pdfCreator.cOption("AutosaveDirectory")=pdfTmpDir 
    pdfCreator.cOption("AutosaveFormat")=0 
    pdfCreator.cSaveOptions 
    pdfCreator.cDefaultPrinter="PDFCreator" 
End If

pdfTmpDir 코드의 다른 설정 디렉토리 경로를 포함하는 문자열 변수입니다.

Set xlApp=CreateObject("Excel.Application") 
xlApp.Visible=False

이 라인은 기존 통합 문서를 열고 인쇄 :

이 라인은 엑셀 시작합니다.

Set xlBook=xlApp.Workbooks.Open(ceBCMSheet) 
xlBook.PrintOut ,,1,False,"PDFCreator"

ceBCMSheet

코드의 다른 세트 XLS 파일의 전체 경로를 포함하는 문자열 변수입니다.

답변

0

Windows 서버에서 레지스트리를 편집하여이 문제를 해결할 수있었습니다.

내가 볼 수있는 "장치"와 "PrinterPorts"이 레지스트리 키의 어린이 관리자 사용자에 대해 나열된 프린터 : 마이크로 소프트 \ 윈도우 NT \ CurrentVersion을

\
HKEY_USERS \ S-1-5-19 \ 소프트웨어

".DEFAULT"사용자에게 해당 키를 복사 했으므로 코드가 오류없이 실행됩니다.