PDA

Просмотр полной версии : COM-объект и Excel



lilyapo
20.12.2016, 13:59
Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект("Excel.Application");
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка

Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?

avm3110
20.12.2016, 15:25
Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект("Excel.Application");
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка

Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?

Ты открываешь Апликайшон - а как ты это открываешь (интерактивно или же на сервере)? Опять же у тебя какой эксель (32-х разрядный или же 64-х разрядный) и в каком контексте пытаешься открыть (в 32-х разрядном клиенте или же на стороне 64-х разрядного сервера)?

lilyapo
20.12.2016, 15:55
Все очень просто.
Файловая база.
Excel 2010. Файл лежит на том же диске, что и база и открывающая его обработка.
Никакого клиент-серверного режима нет.

avm3110
20.12.2016, 16:31
А попробуй "завернуть" в Попытку

Что выдаст?

Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Microsoft Excel...");
Исключение
Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;

lilyapo
20.12.2016, 17:04
Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибка
ОписаниеОшибки()=""

avm3110
20.12.2016, 17:25
[QUOTE=lilyapo;469920]Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибка

похоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?

Попробуй подключиться к открытому "ручками" экселю

Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна

Excel = ПолучитьCOMОбъект(, "Excel.Application");
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.

lilyapo
20.12.2016, 17:41
Все получилось!
Спасибо огромное, фантастика!:dance:

KrisLis
13.09.2018, 13:20
Все получилось!
Спасибо огромное, фантастика!:dance:

Пожалуйста. расскажите, как решили проблему.
Такая же ситуация на одном из компьютеров. Перепробовали все рекомендации из интернета. Ничего не помогает.

lilyapo
13.09.2018, 14:10
Попробуй подключиться к открытому "ручками" экселю

Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна

Excel = ПолучитьCOMОбъект(, "Excel.Application");
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
Так я справилась с проблемой