【发布时间】:2015-01-30 08:39:46
【问题描述】:
我在 64 位 Windows 2012 R2 服务器上的 IBM Domino 9.0 中运行 LotusScript 代码,它使用 COM 启动 Microsoft Excel 2010,打开工作簿,然后通过 PDFCreator(来自 PDFForge)打印以将工作簿转换为 PDF .
IBM Domino 在 SYSTEM 用户下作为服务运行,因此 Excel 和 PDFCreator 在我的代码启动时也在该用户下运行。
这在两天前一直运行良好,然后 PDFCreator 开始挂起,我没有确定任何原因。
客户的一位管理员重新安装了 Excel 和 PDFCreator,还删除了 Windows 用户配置文件(尽管我不知道是哪个用户)。现在 PDFCreator 可以正常启动,但是 Excel 出现了一些问题。
我通过更改我的代码和操作系统文件系统修复了一些 Excel 问题,但现在的问题是当我的代码告诉 Excel 打印工作簿时,会发生此错误:
Microsoft Excel:未安装打印机。要安装打印机,请单击文件选项卡,然后单击打印。 单击未安装打印机,然后单击添加打印机。按照“添加打印机”对话框中的说明进行操作。
此错误仅在尝试使用我的代码打印时发生。
我可以以管理员用户身份启动 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 文件的完整路径,在代码的其他位置设置。
【问题讨论】:
标签: excel com windows-server