16.09.2014


Excel, ошибка [Open method of Workbooks class failed]


Категории: MS Excel — Administrator

Как-то потребовалось написать DLL для Windows, которая бы работала с MS Excel через OLE.
Граничные условия такие:

— Windows 2008 Server, 64bit
— Ms Excel 2007 (как оказалось, версия значения не имеет)
— Язык — С++ (как оказалось, язык тоже не важен)

Код приводить не буду, так как дело не в нем. При попытке открыть файл Excel вылетала ошибка:

Open method of Workbooks class failed

И больше ничего, ни номера ошибки, ни каких-бы то ни было намеков, ничего. Борьба с гуглем увенчалась успехом и дело оказалось в следующем:

когда запускается фоновое приложение Excel (в нашем случае через OLE), то оно взаимодействует с рабочим столом, т.е. использует определенные папки в нем. В моем случае DLL работало под инстансом Oracle, который запускался под системным аккаунтом, поэтому для успешной работы необходимо было иметь папку, что-то типа:

C:\Windows\SysWOW64\config\systemprofile\Desktop

а ее не было. Как только я ее создал, все заработало и ошибка пропала.

Я думаю, что под 32-битном Windows папка будет примерно такая:

C:\Windows\System32\config\systemprofile\Desktop





Календарь


Архив