纠结的问题,在网上查了很久,也只碰到有人遇到类似的问题,但是没有任何解决方法。
也找过微软的技术支持,最后研究半天,给出了答复是
“由于这个不是微软产品报出来的错误,所以我们的案例库中没有记载这样的错误信息。另外vbs脚本调用Excel应用程序对象正常,所以严格来说这个问题超出了我们能够支持的范围。我会帮您继续在Internet上继续搜索这个报错,但是多数论坛没有这方面的专家进行支持所以这个报错问题通常都没有解决。”因为程序用了很多年了,最近突然开始陆陆续续有用户(不是一个单位,是不同单位的用户都有这个问题)反映导入excle报错,后来我们看了一下,就是在调用
createoleobject('excel.application') 报错了提示"不支持此接口"(说没装office的就不用关注这个问题了)
全部的错误提示为“Project test_excel.exe raised exception class EOleSysError with message '不支持此接口',Process stopped,Use step or Run to continue”而且客户机器上的excel是可以正常打开的,而且用vbscript的createobject("excel.application")是可以调用excel的,就是delphi的不行。最纠结的是,本来这些客户都用的好好的,突然有一个月就开始说这个功能有问题了,也不知道是什么问题导致的,也不知道怎么解决。delphi现在没落了,不知道这个问题还可不可能解决啊
也找过微软的技术支持,最后研究半天,给出了答复是
“由于这个不是微软产品报出来的错误,所以我们的案例库中没有记载这样的错误信息。另外vbs脚本调用Excel应用程序对象正常,所以严格来说这个问题超出了我们能够支持的范围。我会帮您继续在Internet上继续搜索这个报错,但是多数论坛没有这方面的专家进行支持所以这个报错问题通常都没有解决。”因为程序用了很多年了,最近突然开始陆陆续续有用户(不是一个单位,是不同单位的用户都有这个问题)反映导入excle报错,后来我们看了一下,就是在调用
createoleobject('excel.application') 报错了提示"不支持此接口"(说没装office的就不用关注这个问题了)
全部的错误提示为“Project test_excel.exe raised exception class EOleSysError with message '不支持此接口',Process stopped,Use step or Run to continue”而且客户机器上的excel是可以正常打开的,而且用vbscript的createobject("excel.application")是可以调用excel的,就是delphi的不行。最纠结的是,本来这些客户都用的好好的,突然有一个月就开始说这个功能有问题了,也不知道是什么问题导致的,也不知道怎么解决。delphi现在没落了,不知道这个问题还可不可能解决啊
解决方案 »
- 这种报表格式如何用ReportMachine实现
- 请问图标的代码是什么啊?
- 讨论:多层中的中间层如何设计最好?
- ado组件编写出来的程序还需要打包吗?重点讨论,come here,tks!
- 跟Delphi和 SQL Server 有关的问题。。。急!!在线等待!多谢了!
- 公司要做数控机床软件,请高手指点思路!!
- sql语句的错误,快点,各位大哥
- 用WebBroker开发Internet的问题。
- 如何判断数据表中的一条特定记录是否存在
- 我现让窗体上的TImage控件像Memo一样(白色、下陷)该如何设置?
- 如何改变ListView失去焦点后选中节点的颜色?
- 帮我看看Idhttp.post提交的问题
var
ClassID: TCLSID;
begin
ClassID := ProgIDToClassID(ClassName);
OleCheck(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
CLSCTX_LOCAL_SERVER, IDispatch, Result));
end;function ProgIDToClassID(const ProgID: string): TGUID;
begin
OleCheck(CLSIDFromProgID(PWideChar(WideString(ProgID)), Result));
end;unit ActiveX;
{$EXTERNALSYM CLSIDFromProgID}
function CLSIDFromProgID(pszProgID: POleStr; out clsid: TCLSID): HResult; stdcall;function CLSIDFromProgID; external ole32 name 'CLSIDFromProgID';ole32 = 'ole32.dll';
procedure OleCheck(Result: HResult);
begin
if not Succeeded(Result) then OleError(Result);
end;
function Succeeded(Res: HResult): Boolean;
begin
Result := Res and $80000000 = 0;
end;procedure OleError(ErrorCode: HResult);
begin
raise EOleSysError.Create('', ErrorCode, 0);
end;可是无法断点跟到CreateOleObject里面去啊