Я пытаюсь открыть рабочую книгу Excel 2003 и сохранить ее как что-то еще, например, excel 95. Я использую следующий код:
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. Это произошло, когда у пользователя была ячейка в режиме редактирования, и вы попытались автоматизировать этот экземпляр. Excel не любит, когда вы редактируете ячейку, а какая-то программа возится в фоновом режиме.
Итак, вот что происходит с вашим клиентом (я думаю):
Как этого избежать: Установите для ConnectKind вашего TExcelApplication значение ckNewInstance, чтобы вы всегда работали в отдельном экземпляре Excel.
OLE 800A03EC обычно имеет дело с недопустимыми символами в файле Excel. Вы используете те же данные, что и ваш клиент? Есть ли разница в региональных настройках? И т. Д. И т. Д. Для этого может быть ряд ошибок, но, скорее всего (как мне сказал быстрый гугл), это региональная настройка.