奥莱800A03EC错误7

奥莱800A03EC错误7

问题描述:

我试图打开Excel 2003工作簿,并将其保存为其他名称,例如卓越95 我使用下面的代码:奥莱800A03EC错误7

XLSApp:=TExcelApplication.Create(Self); 
XLSApp.Workbooks.Open(SomeFileName,NULL,false,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,defaultlcid); 
XLSWB:=TExcelWorkbook.Create(XLSApp); 
XLSWB.ConnectTo(XLSApp.Workbooks.Item[1]); 
XLSWB.SaveCopyAs(ExtractFilePath(edTable.Text)+'temp.xls'); 
XLSWB.SaveAs(SomeOtherFileName,xlExcel7,EmptyParam,EmptyParam,False,False,xlNoChange,xlUserResolution,False,EmptyParam,EmptyParam,EmptyParam,DefaultLCID); 

不幸的是这代码在客户端计算机上给出“Ole 800A03EC”,而它在我的工作。请注意,我安装了Office 2007,并且他拥有Office 2003 SP3。

任何帮助将非常感激。

我在自动化Excel时看到过这个错误。当用户在editmode中有一个单元并且您试图自动化该实例时发生了这种情况。当你编辑一个单元格时,Excel不喜欢它,而某些程序在背景中摆弄。

因此,这是发生了什么,在你的客户(我认为):

  • 你的客户端有Excel中打开并 编辑单元格(选择一个单元格 按F2)
  • 你的代码开始:
    • 您创建一个TExcelApplication并访问Workbooks属性。由于您的Excel应用程序尚未连接,因此它会调用TOleServer.Connect(查看GetDefaultInterface的实现)
    • 由于缺省connectkind为ckRunningOrNew,因此TExcelApplication会连接到正在运行的实例。
    • 由于客户端正在编辑单元格,因此在Open方法中出现错误。

怎样才能防止这种情况:你的TExcelApplication到ckNewInstance集ConnectKind所以你总是在一个单独的Excel实例工作。

+0

谢谢,会试试这个 – 2010-03-03 12:16:24

OLE 800A03EC通常与Excel文件中的无效字符有关。您是否使用与客户相同的数据?区域设置有区别吗?等等,这可能有一些错误,但最有可能的(就像谷歌告诉我的那样)这是一个区域设置。

+0

区域设置可能不同。我们使用的文件是相同的。我需要程序在任何地区设置上顺利运行,所以我该怎么做? – 2010-03-03 12:17:39

在我的情况(xlExcel8格式):

相反的:

theWorkbookWyjscie.SaveAs(saveFileDialog1.FileName, myExcel.XlFileFormat.xlExcel8); 

我用:

theWorkbookWyjscie.SaveAs(saveFileDialog1.FileName); 

theWorkbookWyjscie.SaveAs(saveFileDialog1.FileName, myExcel.XlFileFormat.xlExcel7); 

都工作好...是的,我知道这是一个愚蠢的做法ID解决方案,但它的工作!

excel.Cells[rowIndex, ri] = x; 
where ri is 0. 

注意BENE:该col指数从1开始,当一个人(比如我)不喜欢尝试加载到一个不存在,就像一个Excel单元格一个愚蠢的事情

800A03EC也发生,而不是0。

我试图存储太多的数据到WorkSheet(通过Delphi)时出现错误