【问题标题】:"No printers are installed" printing from Excel via COM“未安装打印机”通过 COM 从 Excel 打印
【发布时间】: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


    【解决方案1】:

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

    我在此注册表项的“设备”和“打印机端口”子项中找到为管理员用户列出的打印机:
    HKEY_USERS\S-1-5-19\Software\Microsoft\Windows NT\CurrentVersion

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 2015-09-11
      相关资源
      最近更新 更多