2014-12-02 134 views
0

我在64位Windows 2012 R2服务器上运行IBM Domino 9.0的LotusScript代码,该服务器使用COM启动Microsoft Excel 2010,打开工作簿,然后通过PDFCreator打印(来自PDFForge)将工作簿转换为PDF。
IBM Domino作为SYSTEM用户下的服务运行,所以Excel和PDFCreator在我的代码启动时也在该用户下运行。“通过COM从Excel打印没有安装打印机”

直到两天前,这工作正常,然后PDFCreator开始挂起发射没有理由,我已经确定。

其中一位客户的管理员重新安装了Excel和PDFCreator,并且还删除了Windows用户配置文件(尽管我不知道哪位用户)。现在PDFCreator正在开始,但Excel中有几个问题。

我修正了一些Excel中的问题与改变我的代码和操作系统的文件系统,但现在的问题是,当我的代码告诉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用户是不可见的,但我不知道如何验证或修复这个问题。
我能做些什么呢?

几位代码如下。为了简洁,我删除了一些错误处理和其他内容。

下面的代码开始的PDFCreator:

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是含有目录路径的字符串变量,在代码的其他地方设置。

这些行启动Excel:

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

这些行打开现有的工作簿和打印。

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

ceBCMSheet是包含完整路径XLS文件的字符串变量,在代码的其他地方设置。

回答

0

我已经能够通过编辑Windows服务器上的注册表来解决这个问题。

我发现,在 “设备” 和 “PrinterPorts” 此注册表项的孩子admin用户列出的打印机:
HKEY_USERS \ S-1-5-19 \软件\微软\的Windows NT \ CURRENTVERSION

我将这些密钥复制到“.DEFAULT”用户,现在我的代码运行时没有错误。