我正在开发一个自动Excel到PDF生成的应用程序。时不时地(并且没有任何明显的原因,程序运行时会出现以下弹出窗口:
32位应用程序的打印驱动程序主机停止工作。
,不久之后,这个:
打印机设置
我需要在这做什么?我的申请并不复杂。错误总是(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
这里发生了什么?而且,更重要的是:为什么它只是偶尔发生在每一个人身上?
答案 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解决方案。