加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Delphi 7中使用TExcelWorkBook SaveAs方法时出现Ole 800A03EC

发布时间:2020-12-15 10:12:03 所属栏目:大数据 来源:网络整理
导读:我正在尝试打开excel 2003工作簿并将其保存为其他内容,例如excel 95. 我使用以下代码: XLSApp:=TExcelApplication.Create(Self);XLSApp.Workbooks.Open(SomeFileName,NULL,false,defaultlcid);XLSWB:=TExcelWorkbook.Create(XLSApp);XLSWB.ConnectTo(XLSApp
我正在尝试打开excel 2003工作簿并将其保存为其他内容,例如excel 95.
我使用以下代码:
XLSApp:=TExcelApplication.Create(Self);
XLSApp.Workbooks.Open(SomeFileName,NULL,false,defaultlcid);
XLSWB:=TExcelWorkbook.Create(XLSApp);
XLSWB.ConnectTo(XLSApp.Workbooks.Item[1]);
XLSWB.SaveCopyAs(ExtractFilePath(edTable.Text)+'temp.xls');
XLSWB.SaveAs(SomeOtherFileName,xlExcel7,EmptyParam,False,xlNoChange,xlUserResolution,DefaultLCID);

不幸的是,这段代码在客户端计算机上提供了“Ole 800A03EC”,而它在我的计算机上运行.请注意,我安装了Office 2007,并且他有Office 2003 SP3.

任何帮助将非常感谢.

解决方法

我在Excel自动化时看到过这个错误.当用户在editmode中有一个单元格并且您尝试自动化该实例时,就会发生这种情况.当您编辑单元格并且某些程序在后台摆弄时,Excel不喜欢它.

所以这就是你的客户正在发生的事情(我认为):

>您的客户已打开Excel并且是
编辑单元格(选择单元格和
按F2)
>您的代码开始:

>您创建TExcelApplication并访问Workbooks属性.由于您的Excel应用程序尚未连接,因此调用TOleServer.Connect(查看GetDefaultInterface的实现)
>由于默认的connectkind是ckRunningOrNew,因此TExcelApplication连接到正在运行的实例.
>因为客户端正在编辑单元格,所以Open方法会出错.

如何防止这种情况:将TExcelApplication的ConnectKind设置为ckNewInstance,这样您将始终在单独的Excel实例中工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读