Ole 800A03EC ошибка при использовании метода TExcelWorkBook SaveAs в Delphi 7

Я пытаюсь открыть рабочую книгу 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.

Любая справка очень ценилась бы.

5
задан The_Fox 2 March 2010 в 07:37
поделиться

2 ответа

Я однажды видел эту ошибку при автоматизации Excel. Это произошло, когда у пользователя была ячейка в режиме редактирования, и вы попытались автоматизировать этот экземпляр. Excel не любит, когда вы редактируете ячейку, а какая-то программа возится в фоновом режиме.

Итак, вот что происходит с вашим клиентом (я думаю):

  • У вашего клиента открыт Excel и редактирует ячейку (выберите ячейку и нажмите F2)
  • Ваш код начинается:
    • Вы создаете TExcelApplication и получаете доступ к свойству Workbooks. Поскольку ваше приложение Excel еще не подключено, оно вызывает TOleServer.Connect (посмотрите на реализацию GetDefaultInterface)
    • Поскольку тип подключения по умолчанию - ckRunningOrNew, TExcelApplication подключается к работающему экземпляру.
    • Поскольку клиент редактирует ячейку, вы получаете ошибку в методе Open.

Как этого избежать: Установите для ConnectKind вашего TExcelApplication значение ckNewInstance, чтобы вы всегда работали в отдельном экземпляре Excel.

9
ответ дан 18 December 2019 в 13:13
поделиться

OLE 800A03EC обычно имеет дело с недопустимыми символами в файле Excel. Вы используете те же данные, что и ваш клиент? Есть ли разница в региональных настройках? И т. Д. И т. Д. Для этого может быть ряд ошибок, но, скорее всего (как мне сказал быстрый гугл), это региональная настройка.

1
ответ дан 18 December 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: