Я пишу приложение фоновой службы, которое должно автоматически считывать данные из файлов Excel 2003. Но что бы я ни пытался, метод OlePropertyGet() всегда приводит к ошибке EAccessViolation при попытке чтения с адреса «00000800».
Ошибка всегда возникает в последней строке этого фрагмента кода и не зависит от того, какой параметр получает метод:
Variant excel, workbooks;
try
{
excel = GetActiveOleObject("Excel.Application");
}
catch(...)
{
excel = CreateOleObject("Excel.Application");
}
workbooks = excel.OlePropertyGet("Workbooks");
Я провёл обширный поиск в Google по этому вопросу, но не нашёл ничего даже отдаленно полезного, только эта ветка форума, в которой кто-то сталкивается с такой же проблемой, но не дает никакой информации о причине или решении (довольно забавно, что в какой-то момент автор упоминает, что знает причину, но не говорит, что это такое!).
Я открыт для любых идей относительно того, что вызывает это и как решить эту проблему, а также для альтернативных подходов к автоматизации Excel OLE.