Delphi程序不再启动Excel

问题描述

Delphi Rio,Win10 64位,Excel 2016-64位。我有一段时间以前在Delphi中编写的实用程序。它打开一个html文件,启动Excel,解析该html文件,并将各个部分转储到Excel中。它的运行非常好...突然之间,我最近开始运行它,现在出现错误。具体来说,我正在获取EOleSysError-服务器执行失败,ProgID:Excel.Application。尝试启动Excel时会发生这种情况。我没有重新编译程序,它只是停止工作,现在出现此错误。我验证了Excel可以手动启动/使用/停止而没有问题。我验证了没有Excel可执行文件后台运行。我确实在我的应用程序上尝试了完全重新编译,没有任何变化。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。脱颖而出)。我很茫然。当我运行代码时,它在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:服务器执行失败,ClassID:{数字束…似乎是一个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。两者都没有改变问题。

解决方法

感谢大家的建议...很遗憾,此方法无济于事,包括全面的在线维修。我终于不得不完全卸载,然后重新安装。这解决了我的问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...