【发布时间】:2020-11-11 14:14:04
【问题描述】:
Delphi Rio,Win10 64 位,Excel 2016-64 位。我有一个我不久前在 Delphi 中编写的实用程序。它打开一个 html 文件,启动 Excel,解析 html 文件,并将各个部分转储到 Excel 中。它一直运行良好......突然间,我最近去运行它,现在我遇到了错误。具体来说,我收到 EOleSysError - 服务器执行失败,ProgID:Excel.Application。尝试启动 Excel 时会发生这种情况。我没有重新编译我的程序,它只是停止工作,现在给出了这个错误。我验证了 Excel 可以毫无问题地手动启动/使用/停止。我确认后台没有运行 Excel 可执行文件。我确实尝试对我的应用程序进行完全重新编译,没有任何变化......系统上唯一改变的是windows进行了相当大的更新,并且我安装了一些额外的程序(罗技相机等)没有说话脱颖而出)。我很茫然。当我运行我的代码时,它在 CreateOleObject 行上失败。这是例程..
// This routine Starts excel
function glib_StartExcel: Integer;
var
myAPP: OleVariant;
Save_Cursor: TCursor;
begin
// Assume that it is already running
result := glib_FAILURE;
if not Assigned(oExcel) then
begin
Save_Cursor := Screen.Cursor;
Screen.Cursor := crHourglass;
myAPP := CreateOleObject('Excel.Application');
oExcel := IDispatch(myAPP) as ExcelApplication;
Screen.Cursor := Save_Cursor;
result := glib_SUCCESS;
end;
end;
oExcel 是 ExcelApplication 类型的全局变量。其中,我的USES子句包含
System.UITypes, ComObj, Office_TLB, Excel_TLB, DB,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls,...
我去检查了一个完全不同的程序,它再次启动并与 Excel 一起工作。我收到类似的错误:EOleSysError: Server Execution failed, ClassID:{bunch of number... 似乎是一个 GUID}。这个程序也没有被重新编译。有什么想法吗? 知道发生了什么吗?
** 附加信息。当我尝试运行我的程序时,我在 Windows 事件日志中收到错误消息。消息是:
Faulting application name: EXCEL.EXE, version: 16.0.11629.20246, time stamp: 0x5cfadf82
Faulting module name: KERNELBASE.dll, version: 10.0.19041.572, time stamp: 0x1183946c
Exception code: 0xc0020001
Fault offset: 0x0000000000023e49
Faulting process id: 0x208
Faulting application start time: 0x01d6b84ea1de50b0
Faulting application path: C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report Id: bed97990-8ead-4593-a058-e834105f0654
Faulting package full name:
Faulting package-relative application ID:
** EDIT2 - 我找到了一个 MS Word 宏,它使用 CreateObject... 打开 Excel。这在我的电脑中也不起作用。这让我相信有人我的电脑配置搞砸了。我确实进入了 Windows 更新并确保我已应用所有更新。
**EDIT3 - 我进行了 Office 快速修复以及在线/完整修复(下载并似乎重新安装了 Office。两者都没有改变问题。
【问题讨论】:
-
更新是否影响了您的用户权限?或更改目录权限?
-
尝试重新安装 Excel。
-
@@Solar Mike - 我不能说。我可以开始一切正常。只是我的应用无法启动 Excel。
-
@@Oliver - 虽然这是一个选项,但由于 Excel 插件,这是一个主要的恶化。我只会在万不得已的情况下这样做......我祈祷它不会发生这种情况。
-
在注册表中搜索是否找到具有“Excel.Application”作为数据的键。在我的系统上,它位于:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Classes\CLSID\{00024500-0000-0000-C000-000000000046}\VersionIndependentProgID 这是 CreateOleObject('Excel.Application') 搜索的关键。