Excel自动化:PDF导出导致“打印机设置”弹出窗口

时间:2014-07-24 14:38:55

标签: excel pdf office-interop office-2007

我正在开发一个自动Excel到PDF生成的应用程序。时不时地(并且没有任何明显的原因,程序运行时会出现以下弹出窗口:

  

32位应用程序的打印驱动程序主机停止工作。

Print driver host for 32bit applications stopped working

,不久之后,这个:

  

打印机设置

Printer setup Popup

我需要在这做什么?我的申请并不复杂。错误总是(100%)发生在这一行:

_application.ActiveWorkbook.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF,
    pdfTemplatePath, Excel.XlFixedFormatQuality.xlQualityStandard, 
    _, _, 1, pdfPrintAreaEnd);

有问题的变量是:

Excel := Microsoft.Office.Intertop.Excel
_application := Excel.Application
_ := System.Type.Missing
pdfPrintAreaEnd := int 6

异常消息如下:

System.Runtime.InteropServices.COMException (0x800A03EC):
    Exception from HRESULT: 0x800A03EC

这里发生了什么?而且,更重要的是:为什么它只是偶尔发生在每一个人身上?

2 个答案:

答案 0 :(得分:9)

好的,经过对此事的一些研究后,我遇到了我认为迄今为止我遇到的关于Excel自动化的confuzzling最多的事情之一。

错误消息与Excel使用的其他情况一致,这些情况既是自动的,也不是。在所有这些情况下的共同点是(扣紧!)网络打印机被设置为默认打印机

那是对的 - 默认使用网络打印机,即使您使用完全不同的打印机打印或根本没有打印机打印(如导出为PDF的情况,这与打印到例如不同) Adobe PDF Printer,对吗?)它会导致此错误有时在某些机器上弹出。

我将默认打印机更改为内部内容,例如 Microsoft XPS文档打印机,再次尝试我现在可以导出成百上千的PDF而不会出现一次错误消息

答案 1 :(得分:0)

我的笔记本电脑上有类似的问题。尝试执行ActiveWorkbook.ExportAsFixedFormat类型:= xlTypePDF,文件名:=“ \ directory \ MyFile”。

网络打印机被设置为默认打印机。因此,我在Windows资源管理器中导航至打印机。这提示我输入网络密码。当我重新运行该代码时,它表现出色。(您可以通过在Windows搜索栏中键入“打印机”来找到Windows 10中打印机的位置。单击“打印机和扫描仪”,导航至网络打印机,然后单击“管理” ->选择硬件属性。该位置将显示在打印机图像旁边。在本例中,打印机的位置是在其名称中指定的。

总而言之,请确保您可以访问默认打印机。一个简单的测试就是尝试使用默认打印机进行打印。

如果您不介意更改默认打印机,请遵循上述@ F.P解决方案。