Ошибка работы 1С 8 с Excel: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу
Описание ошибки:
Проявила себя в клиент-серверной базе. Релиз платформы 1С: Предприятие 8.3.13.1644.
Найденные решения:
Полная формулировка ошибки:
{Доработки Документ.УстановкаЦенНоменклатуры.Форма.Доп_ФормаИмпортXLS.Форма(83)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1C_ArhivТест загрузка прайсов[имя_файла].xlsx’. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
При доработке в расширении для конфигурации 1С: Комплексная автоматизация 8, ред. 2, которая должна загружать данные из файлов Excel и при попытке выполнения в коде РабочаяКнига = ExcelПриложение.WorkBooks.Open(ФормаИмпортXLS.ИмяФайла);. Что удивительно, но в более ранней редакции Комплексной, 1.1, эта проблема не возникала в этом же коде, хотя обе базы на одном сервере.
Проблема оказалась нова для автора этого текста только в 2020 году, хотя самой проблеме достаточно много времени (более 5 лет на момент написания). В обсуждении данной ошибки на сайте infostart.ru «Ошибка открытия файла Excel на сервере» обсуждается несколько предложений по решению проблемы, среди которых наиболее популярный вариант решения. Так же там много попутных предложений по настройке прав на стороне сервера, если вдруг популярный вариант окажется не актуальным.
Популярность этого варианта подтверждается исчерпывающим обсуждением и вот на этом ресурсе: «v8.x: [РЕШЕНО] Ошибка при вызове метода контекста (Open) при работе с Excel»
Проблема была рещена данным простым решением, но обращу внимание на то, что данное действие должно быть выполнено на сервере, а не на локальном рабочем месте.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
23-09-2020
Журавлев А.С.
(Сайт azhur-c.ru)
14.02.19 — 18:22
При открытии (сохранении) отчета, сформированного в Альфа-Авто, в Excel 2010 стала появляться Неизвестная ошибка:
{ОбщаяФорма.Отчет.Форма(962)}: Ошибка при вызове метода контекста (Open)
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
по причине:
Неизвестная ошибка
Вроде на форуме 1С-Рарус нашел решение подобной проблемы https://rarus.ru/forum/messages/forum7/topic10978/message62444/#message62444, но замена расширения у файла tmpxls.xls на xlsx мне не помогла:
Произошла исключительная ситуация (Microsoft Excel): Не удается открыть файл «tmpxls.xlsx», так как формат или расширение этого файла являются недопустимыми. Убедитесь, что файл не поврежден и расширение его имени соответствует его формату
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xlsx»); //+МВ 14.02.2019 xls дает Неизвестная ошибка
по причине:
Произошла исключительная ситуация (Microsoft Excel): Не удается открыть файл «tmpxls.xlsx», так как формат или расширение этого файла являются недопустимыми. Убедитесь, что файл не поврежден и расширение его имени соответствует его формату
А настройках безопасности Excel затрудняюсь… Дело в том, что КаталогВременныхФайлов(), в который пишется tmpxls.xls, находится D:UsersmvAppDataLocalTemp3. Не знаю, как его назначает система? А пытаюсь добавить его в Надежное расположение, и не дает, говорит не является допустимым!? https://jpegshare.net/e7/32/e7329ffaad896b0109bb8f5689f1e368.jpg.html
Как побороть проблему?
1 — 14.02.19 — 18:27
Так измени код, где он там путь выбирает.
2 — 14.02.19 — 18:27
вместо КаталогВременныхФайлов() подставь свое
3 — 14.02.19 — 19:32
(2) Подставил в Надежное расположение D:1с-tempmv, прописал в коде: КаталогВременныхФайловExcel = «D:1с-tempmv»; вместо КаталогВременныхФайлов(). Теперь:
{ОбщаяФорма.Отчет.Форма(962)}: Ошибка при вызове метода контекста (Записать)
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайловExcel + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
по причине:
Ошибка при выполнении файловой операции ‘D:1с-tempmvtmpxls.xls’. -2147287037(0x80030003): Путь %1 не найден.
4 — 14.02.19 — 19:48
Присвой путь какой-нибудь переменной и убедись, что значение из отладчика является реальным и доступным
5 — 14.02.19 — 19:52
>стала появляться Неизвестная ошибка
Признавайтесь что меняли что стала ошибка появляться? Одмины с правами на сервере не игрались?
6 — 14.02.19 — 20:21
(5) Говорят ничего, только обновления ставились.
7 — 14.02.19 — 20:25
(6) бздят
8 — 15.02.19 — 06:51
(2) > не поленился и проверил, что проблема именно в данной настройке — в коде жестко поменял КаталогВременныхФайлов() на тестовую «D:Temp» + прописал ее в доверенные (Excel дал добавить)
Такое решение проблемы возможно для сетевых пользователей, работающих каждый на своем компьютере (под ХР или 2003). А у меня Альфа-Авто на сервере-терминале 2008R2, где каждому пользователю назначаются свои папки, в т.ч. временные. Мне назначена D:UsersmvAppDataLocalTemp, причем mv — Mikhail Volkov. Наверняка в системе, где назначаются эти папки (не нашел где?) прописывается %UserName%. Мне сисамин написал: Чтоб не создавать под каждого пользователя его подкаталог используй примерно такую конструкцию:
set up=d:1C-Temp
set un=%UserName%
set ud=%UserDnsDomain%
set КаталогВременныхФайловExcel=»%up%%un%.%ud%»
if not exist %КаталогВременныхФайловExcel% md %КаталогВременныхФайловExcel%
Как ее прописать в 1С?
9 — 15.02.19 — 07:06
(8) Ты понимаешь что сервер 1С запускается от другого юзера не от того что клиент 1С ?
Или у вас там файловая база?
10 — 15.02.19 — 08:03
(9) Рабочая база SQL, а отлаживаю в файловой копии — одна и та же ошибка:
{ОбщаяФорма.Отчет.Форма(963)}: Ошибка при вызове метода контекста (Open)
Excel.Workbooks.Open(КаталогВременныхФайловExcel);
по причине:
Неизвестная ошибка
и для расширения xls, и для xlsx.
Где в системе назначается КаталогВременныхФайлов()? Хочу ее поменять, хотя бы под собой для проверки.
11 — 15.02.19 — 10:27
К https://jpegshare.net/e7/32/e7329ffaad896b0109bb8f5689f1e368.jpg.html
Каталог D:UsersmvAppDataLocalTemp3 и D:UsersmvAppDataLocalTemp не дает сохранить в Надежное расположение. А папку D:UsersmvAppDataLocal дало с галочкой «Также доверять всем вложенным папкам». Но Неизвестная ошибка осталась. Видимо добавить КаталогВременныхФайлов() в Надежное расположение расположение мало… что-то еще. А что?
12 — 16.02.19 — 05:22
Сисадмины удалили все обновления после 13.02.2019. К сожалению не помогло, Неизвестная ошибка осталась.
13 — 16.02.19 — 06:40
(10) попробуй тогда
Excel.Workbooks.Open(КаталогВременныхФайловExcel + «tmpxls.xlsx»);
или
Excel.Workbooks.Open(КаталогВременныхФайловExcel + «tmpxls.xlsx»);
14 — 16.02.19 — 06:41
Используй ПолучитьИмяВременногоФайла()
Потом переименовывай куда удобно
15 — 16.02.19 — 10:43
(13) Пробовал — ошибка в (0): «Не удается открыть файл «tmpxls.xlsx», так как формат или расширение этого файла являются недопустимыми…» из-за того, что в команде: ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS); заменил только одно расширение. А оба заменил на xlsx, то как прежде «Неизвестная ошибка».
16 — 16.02.19 — 22:13
Может таки покажешь полный код, а не будешь кусочки вываливать?
17 — 17.02.19 — 07:14
(16) Одна из функций (самая короткая) без каких либо изменений (всего их 4):
// Открыть отчет в формате Excel
Процедура ОткрытьВExcelТабличныйДокумент(Excel, ДокументРезультат) Экспорт
ДокументРезультат.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.HTML);
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
tmpBook = Excel.Workbooks.Item(Excel.Workbooks.Count);
КнигаExcel = Excel.Workbooks.Add();
ЛистExcel = КнигаExcel.WorkSheets.Item(1);
КнигаExcel.Colors = tmpBook.Colors;
tmpBook.Sheets(1).Cells.Copy(ЛистExcel.Cells);
tmpBook.Close();
КнигаExcel.Activate();
ЛистExcel.Activate();
Excel.Visible = 1;
КонецПроцедуры
18 — 17.02.19 — 07:32
(17) почему тип html?
19 — 17.02.19 — 08:47
(18) Другая, чуть подлиннее:
// Процедура открывает в MS Excel табличный документ или сводную таблицу
Процедура ДействияФормыОткрытьВExcel(Кнопка)
Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Исключение
Сообщить(«ОШИБКА! Приложение MS Excel отсутствует или недостаточно прав доступа!
| — » + ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
Возврат;
КонецПопытки;
// Откроем табличный документ
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
tmpBook = Excel.Workbooks.Item(Excel.Workbooks.Count);
КнигаExcel = Excel.Workbooks.Add();
КнигаExcel.Colors = tmpBook.Colors;
tmpBook.Sheets(1).Copy(КнигаExcel.WorkSheets(1));
ЛистExcel = КнигаExcel.WorkSheets.Item(1);
//tmpBook.Sheets(1).Cells.Copy(ЛистExcel.Cells);
tmpBook.Close();
//ЛистExcel.Name=ЭтаФорма.ОбъектПредставление;
Если ЭлементыФормы.ТабличныйДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Портрет Тогда
ЛистExcel.PageSetup.Orientation = 1;
Иначе
ЛистExcel.PageSetup.Orientation = 2;
КонецЕсли;
ПолеСлева=ЭлементыФормы.ТабличныйДокумент.ПолеСлева/25.4;
ПолеСправа=ЭлементыФормы.ТабличныйДокумент.ПолеСправа/25.4;
ПолеСверху=ЭлементыФормы.ТабличныйДокумент.ПолеСверху/25.4;
ПолеСнизу=ЭлементыФормы.ТабличныйДокумент.ПолеСнизу/25.4;
ЛистExcel.PageSetup.LeftMargin = Excel.Application.InchesToPoints(ПолеСлева);
ЛистExcel.PageSetup.RightMargin = Excel.Application.InchesToPoints(ПолеСправа);
ЛистExcel.PageSetup.TopMargin = Excel.Application.InchesToPoints(ПолеСверху);
ЛистExcel.PageSetup.BottomMargin = Excel.Application.InchesToPoints(ПолеСнизу);
КнигаExcel.Activate();
ЛистExcel.Activate();
Excel.Visible = 1;
Excel = «»;
КонецПроцедуры // ДействияФормыОткрытьВExcel()
20 — 17.02.19 — 09:50
(17) здесь уберите HTML
ДокументРезультат.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.HTML);
давайте эти эксперименты на потом.
21 — 18.02.19 — 06:14
А типовых конфигурациях: УПП, КА1, КА2 есть подобные функции открытия в MS Excel табличного документа или отчета (не использую)? Чтобы понять: эта проблема чисто Альфа-Авто, или безопасности MS Excel 2010…
22 — 18.02.19 — 16:55
Внес изменения в (19):
// Процедура открывает в MS Excel табличный документ или сводную таблицу
Процедура ДействияФормыОткрытьВExcel(Кнопка)
Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Исключение
Сообщить(«ОШИБКА! Приложение MS Excel отсутствует или недостаточно прав доступа!
| — » + ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
Возврат;
КонецПопытки;
// Откроем табличный документ
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
ОшибкаОткрытия = Ложь; //+МВ 18.02.2019
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ОшибкаОткрытия = Истина;
КонецПопытки; //-МВ
tmpBook = Excel.Workbooks.Item(Excel.Workbooks.Count);
КнигаExcel = Excel.Workbooks.Add();
КнигаExcel.Colors = tmpBook.Colors;
tmpBook.Sheets(1).Copy(КнигаExcel.WorkSheets(1));
ЛистExcel = КнигаExcel.WorkSheets.Item(1);
//tmpBook.Sheets(1).Cells.Copy(ЛистExcel.Cells);
tmpBook.Close();
//ЛистExcel.Name=ЭтаФорма.ОбъектПредставление;
Если ЭлементыФормы.ТабличныйДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Портрет Тогда
ЛистExcel.PageSetup.Orientation = 1;
Иначе
ЛистExcel.PageSetup.Orientation = 2;
КонецЕсли;
ПолеСлева=ЭлементыФормы.ТабличныйДокумент.ПолеСлева/25.4;
ПолеСправа=ЭлементыФормы.ТабличныйДокумент.ПолеСправа/25.4;
ПолеСверху=ЭлементыФормы.ТабличныйДокумент.ПолеСверху/25.4;
ПолеСнизу=ЭлементыФормы.ТабличныйДокумент.ПолеСнизу/25.4;
ЛистExcel.PageSetup.LeftMargin = Excel.Application.InchesToPoints(ПолеСлева);
ЛистExcel.PageSetup.RightMargin = Excel.Application.InchesToPoints(ПолеСправа);
ЛистExcel.PageSetup.TopMargin = Excel.Application.InchesToPoints(ПолеСверху);
ЛистExcel.PageSetup.BottomMargin = Excel.Application.InchesToPoints(ПолеСнизу);
КнигаExcel.Activate();
ЛистExcel.Activate();
Excel.Visible = 1;
Если ОшибкаОткрытия Тогда //+МВ 18.02.2019
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());
КонецПопытки;
КонецЕсли; //-МВ
Excel = «»;
КонецПроцедуры // ДействияФормыОткрытьВExcel()
Теперь открываются 2 Excel одинаковых файла: Книга1 и tmpxls [Режим совместимости]! При этом 1 ошибка: Ошибка открытия Excel файла: D:UsersmvAppDataLocalTemp2tmpxls.xls
— {ОбщаяФорма.ПечатнаяФормаДокументов.Форма(46)}: Ошибка при вызове метода контекста (Open): Неизвестная ошибка
Получается, что при 1-й попытке файл tmpxls не готов к открытию (исполнению Excel.Workbooks.Open)? Когда его можно открывать, после какой команды?
23 — 18.02.19 — 17:23
Он у вас должен в исключение попасть.
24 — 18.02.19 — 17:23
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
если это не работает, тогда в исключение
Исключение
Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());
25 — 18.02.19 — 17:25
Первый раз не получилось открыть, ну и пусть. Откроем второй раз. Зачем?
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ОшибкаОткрытия = Истина;
КонецПопытки; //-МВ
………………..
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());
КонецПопытки;
26 — 18.02.19 — 17:27
ОшибкаОткрытия = Ложь; //+МВ 18.02.2019
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
Excel = Неопределено;
Возврат;//ОшибкаОткрытия = Истина;
КонецПопытки; //-МВ
И ещё надо глянуть запущены ли процессы Эксель на сервере. Возможно оин заняли ваш файл «tmpxls»
27 — 18.02.19 — 18:17
(24) При повторном открытии можно без попытки, открывается без проблем.
(25) Как зачем: при первой попытке tmpxls.xls еще не готов к открытию (я так понимаю). Открываем в конце функции… может можно раньше, но где?
(26) Открываю другой отчет, возникает ошибка: {ОбщаяФорма.ПечатнаяФормаДокументов.Форма(43)}: Ошибка при вызове метода контекста (Записать)
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
по причине:
Ошибка совместного доступа к файлу ‘D:UsersmvAppDataLocalTemp2tmpxls.xls’. -2147287008(0x80030020): Ресурс занят.
Раньше такого не было, по несколько отчетов в Excel открывал. Не помню как назывались, может: Книга1, Книга2, Книга3… а не tmpxls.xls? Если tmpxls.xls с 1-м отчетом закрыть, то нет этой ошибки, открывается tmpxls.xls [Режим совместимости] и Книга2 со 2-м отчетом.
28 — 19.02.19 — 07:37
2 открытых файла: tmpxls.xls [Режим совместимости] и Книга1 не нужны. Нужен только Книга1. После ее создания следует команда: tmpBook.Close(); но она в моем случае не действует, поскольку команда Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»); в первой попытке не сработала. Решил ее вставить во 2-ю попытку:
Если ОшибкаОткрытия Тогда //+МВ 18.02.2019
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
tmpBook.Close(); // Закрывает объект
Исключение
Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());
КонецПопытки;
КонецЕсли; //-МВ
Дало ошибку: Повторная ошибка открытия Excel файла: D:UsersmvAppDataLocalTemp2tmpxls.xls
— {ОбщаяФорма.ПечатнаяФормаДокументов.Форма(87)}: Ошибка при вызове метода контекста (Close): Неизвестная ошибка
Как мне открыть Книга1 (не записана в файл) без файла tmpxls.xls?
29 — 19.02.19 — 11:31
(21) Перенес функцию (19) из Альфа-Авто в УПП/КА1, та же самая ошибка:
{ОбщийМодуль.УправлениеОтчетами.Модуль(1753)}: Ошибка при вызове метода контекста (Open)
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
по причине:
Неизвестная ошибка
Функция кривая или дело в Excel?
30 — 19.02.19 — 19:03
Функция кривая: после записи файла tmpxls.xls, и перед его открытием, нужно включать видимость:
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
Excel.Visible = 1; //+dvs 19.02.2019 д.б. в этом месте, иначе не работает.
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Mikhail Volkov
31 — 04.03.19 — 15:17
Озадачили меня: хотят Excel и весь Microsoft Office заменить бесплатным Libre Office 6.4.1.1. Возможно, как к примеру будет выглядеть процедура ОткрытьВExcelТабличныйДокумент() в (17)?
-
20.12.2016, 13:59
#1
Иногда оказывает помощь
COM-объект и Excel
Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибкаСталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?
-
20.12.2016, 15:25
#2
Гордость форума PRO
Re: COM-объект и Excel
Сообщение от lilyapo
Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибкаСталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?Ты открываешь Апликайшон — а как ты это открываешь (интерактивно или же на сервере)? Опять же у тебя какой эксель (32-х разрядный или же 64-х разрядный) и в каком контексте пытаешься открыть (в 32-х разрядном клиенте или же на стороне 64-х разрядного сервера)?
-
20.12.2016, 15:55
#3
Иногда оказывает помощь
Re: COM-объект и Excel
Все очень просто.
Файловая база.
Excel 2010. Файл лежит на том же диске, что и база и открывающая его обработка.
Никакого клиент-серверного режима нет.
-
20.12.2016, 16:31
#4
Гордость форума PRO
Re: COM-объект и Excel
А попробуй «завернуть» в Попытку
Что выдаст?
Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Excel.WorkBooks.Open(ИмяФайла);
Состояние(«Обработка файла Microsoft Excel…»);
Исключение
Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
-
20.12.2016, 17:04
#5
Иногда оказывает помощь
Re: COM-объект и Excel
Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибка
ОписаниеОшибки()=»»
-
20.12.2016, 17:25
#6
Гордость форума PRO
Re: COM-объект и Excel
[QUOTE=lilyapo;469920]Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибкапохоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?
Попробуй подключиться к открытому «ручками» экселю
Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна
Excel = ПолучитьCOMОбъект(, «Excel.Application»);
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
-
Пользователь сказал cпасибо:
-
20.12.2016, 17:41
#7
Иногда оказывает помощь
Re: COM-объект и Excel
Все получилось!
Спасибо огромное, фантастика!:dance:
-
13.09.2018, 12:20
#8
Гость форума
Re: COM-объект и Excel
Сообщение от lilyapo
Все получилось!
Спасибо огромное, фантастика!:dance:Пожалуйста. расскажите, как решили проблему.
Такая же ситуация на одном из компьютеров. Перепробовали все рекомендации из интернета. Ничего не помогает.
-
13.09.2018, 13:10
#9
Иногда оказывает помощь
Re: COM-объект и Excel
Попробуй подключиться к открытому «ручками» экселю
Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна
Excel = ПолучитьCOMОбъект(, «Excel.Application»);
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
Так я справилась с проблемой
Ошибка работы 1С 8 с Excel: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу
Описание ошибки:
Проявила себя в клиент-серверной базе. Релиз платформы 1С: Предприятие 8.3.13.1644.
Найденные решения:
Полная формулировка ошибки:
{Доработки Документ.УстановкаЦенНоменклатуры.Форма.Доп_ФормаИмпортXLS.Форма(83)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1C_ArhivТест загрузка прайсов[имя_файла].xlsx’. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
При доработке в расширении для конфигурации 1С: Комплексная автоматизация 8, ред. 2, которая должна загружать данные из файлов Excel и при попытке выполнения в коде РабочаяКнига = ExcelПриложение.WorkBooks.Open(ФормаИмпортXLS.ИмяФайла);. Что удивительно, но в более ранней редакции Комплексной, 1.1, эта проблема не возникала в этом же коде, хотя обе базы на одном сервере.
Проблема оказалась нова для автора этого текста только в 2020 году, хотя самой проблеме достаточно много времени (более 5 лет на момент написания). В обсуждении данной ошибки на сайте infostart.ru «Ошибка открытия файла Excel на сервере» обсуждается несколько предложений по решению проблемы, среди которых наиболее популярный вариант решения. Так же там много попутных предложений по настройке прав на стороне сервера, если вдруг популярный вариант окажется не актуальным.
Популярность этого варианта подтверждается исчерпывающим обсуждением и вот на этом ресурсе: «v8.x: [РЕШЕНО] Ошибка при вызове метода контекста (Open) при работе с Excel»
Проблема была рещена данным простым решением, но обращу внимание на то, что данное действие должно быть выполнено на сервере, а не на локальном рабочем месте.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
23-09-2020
Журавлев А.С.
(Сайт azhur-c.ru)
|
|||
Beduin
07.05.15 — 18:58 |
ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяФайла, «UTF-8»); {Обработка.ВыгрузкаЗагрузкаДанныхXML.МодульОбъекта(64)}: Ошибка при вызове метода контекста (ОткрытьФайл) ЗаписьXML.ОткрытьФайл(ИмяФайла, «UTF-8»); по причине: Ошибка доступа к файлу ‘C:UsersAdmin1cDesktopФайл выгрузки.xml’ Режим тонкий клиент. Бухгалтерия КОРП 3.0 В чем причина? |
||
Beduin
1 — 07.05.15 — 19:00 |
При чем, если просто открыть файл как текстовый, то все хорошо. |
||
mehfk
2 — 07.05.15 — 19:03 |
Нет доступа на запись. Пнуть сисадмина. |
||
Beduin
3 — 07.05.15 — 19:05 |
(2) Средствами 1С создал файл и записал его в это папку. Права есть. |
||
Beduin
4 — 07.05.15 — 19:13 |
Это может из-за того что аккаунт от службы сервера не входит в группу администраторов? |
||
mehfk
5 — 07.05.15 — 19:17 |
Какое из 4-х слов в первом предложении не понятно? |
||
Beduin 6 — 07.05.15 — 20:00 |
(5) Угу . дело было в этом. Спасибо. |
TurboConf — расширение возможностей Конфигуратора 1С |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
-
20.12.2016, 13:59
#1
Иногда оказывает помощь
COM-объект и Excel
Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибкаСталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?
-
20.12.2016, 15:25
#2
Гордость форума PRO
Re: COM-объект и Excel
Сообщение от lilyapo
Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибкаСталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?Ты открываешь Апликайшон — а как ты это открываешь (интерактивно или же на сервере)? Опять же у тебя какой эксель (32-х разрядный или же 64-х разрядный) и в каком контексте пытаешься открыть (в 32-х разрядном клиенте или же на стороне 64-х разрядного сервера)?
-
20.12.2016, 15:55
#3
Иногда оказывает помощь
Re: COM-объект и Excel
Все очень просто.
Файловая база.
Excel 2010. Файл лежит на том же диске, что и база и открывающая его обработка.
Никакого клиент-серверного режима нет.
-
20.12.2016, 16:31
#4
Гордость форума PRO
Re: COM-объект и Excel
А попробуй «завернуть» в Попытку
Что выдаст?
Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Excel.WorkBooks.Open(ИмяФайла);
Состояние(«Обработка файла Microsoft Excel…»);
Исключение
Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
-
20.12.2016, 17:04
#5
Иногда оказывает помощь
Re: COM-объект и Excel
Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибка
ОписаниеОшибки()=»»
-
20.12.2016, 17:25
#6
Гордость форума PRO
Re: COM-объект и Excel
[QUOTE=lilyapo;469920]Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибкапохоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?
Попробуй подключиться к открытому «ручками» экселю
Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна
Excel = ПолучитьCOMОбъект(, «Excel.Application»);
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
-
Пользователь сказал cпасибо:
-
20.12.2016, 17:41
#7
Иногда оказывает помощь
Re: COM-объект и Excel
Все получилось!
Спасибо огромное, фантастика!:dance:
-
13.09.2018, 12:20
#8
Гость форума
Re: COM-объект и Excel
Сообщение от lilyapo
Все получилось!
Спасибо огромное, фантастика!:dance:Пожалуйста. расскажите, как решили проблему.
Такая же ситуация на одном из компьютеров. Перепробовали все рекомендации из интернета. Ничего не помогает.
-
13.09.2018, 13:10
#9
Иногда оказывает помощь
Re: COM-объект и Excel
Попробуй подключиться к открытому «ручками» экселю
Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна
Excel = ПолучитьCOMОбъект(, «Excel.Application»);
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
Так я справилась с проблемой
Nikoly |
|
||
---|---|---|---|
При работе на сервере, регламентного задания, обработка открывает через Excel = Новый COMОбъект(«Excel.Application»); Excel.Application.Workbooks.Open(ИмяФайла) документ, мне выдается ошибка: Изменено 16.07.11 15:32:46 по причине: Другая категория |
Yandex |
|
||
---|---|---|---|
Nikoly |
|
||
---|---|---|---|
http://forum.mista.ru/topic.php?id=522217 |
Подсказка: Для выделения Кода используйте (в редакторе). |
Ошибка при вызове метода контекста (Прочитать)
Ошибка при выполнении файловой операции при чтении xls файла методом прочитать объекта ТабличныйДокумент.
Скрин сообщения
Данный объект 1C умеет не только записывать в Excel, но возможна и обратная операция с ограничениями, свойственными табличному документу.
В чем плюсы такой методики чтения
- Всё производится встроенными средствами;
- достаточно быстро;
- код в 2 строки
- данные не требуется преобразовывать, обычно всё считывается достаточно корректно, их можно проверить средствами 1С.
- возможно считывать значения ячеек как текст (без авто-преобразования),
- доступно на сервере, где excel вообще нельзя установить (linux, OSx).
Причина ошибки
Отличительной особенностью, вызывающей данную ошибку, является то, что 1С нужен монопольный доступ на время считывания.
Если же документ открыт, то выходит ошибка при выполнении файловой операции чтения.
COM-Объекта Excel.Application в данном ситуации просто открывает еще один экземпляр, а также в нём можно скрыть отображение сообшения о режиме «чтения».
Другой причиной может быть: отсутствие прав на чтение этого файла
Решение:
Закрыть открытую в Excel (или другой программе) книгу, проверить права на файл (возможность открытия в его в Excel, косвенный признак его наличия)
Реклама — величайшее искусство XX века.
-
Доброе время суток.
Проблема заключается в следующем внешняя обработка загрузки из Эксель на личном компьютере работает нормально, но на РДП выдает ошибку «ошибка при вызове метода контекста (open)» там и там база файловая.Переделал все что нашел в инете
— создал папку C:WindowsSysWOW64configsystemprofileDesktop ;
— Настройки DCOM добавил пользователя;
— И проделал «А решается это так:
на сервере убиваем excel (taskkill /im excel.exe /f)
открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем «Текущий пользователь», ОК.
Готово»
И все равно выскакиваю по ошибке.
Есть у кого то предложение что можно сделать еще. -
Online
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.889
- Симпатии:
- 1.029
- Баллы:
- 204
покпжите текст ошибки полностью.
из всего там нужно только последнее действие.что будет, если интерактивно запустить эксель и открыть этот же файл?
-
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (Open)
КНИГА = Excel.WorkBooks.Open(ИмяФайла);
по причине:
Неизвестная ошибка -
Запустил интерактивно и все равно ошибка
Опечатки нет пере набрал Open раз 10 -
Online
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.889
- Симпатии:
- 1.029
- Баллы:
- 204
при интерактивном открытии файла, что говорит?
-
Доброго,
Клиент какой запускается на RDP, 32/64 бит ? -
Добрый день.При интерактивном открытии ничего не пишет.
RDP клиент запускается 64 и офис 64 -
Похожая проблема вылечилась использованием 32 битного клиента (мы можем это себе позволить),
еще, как вариант, я делал через формирование файла на сервере и передачу его на клиента
С.П.- : «ПоместитьВоВременноеХранилище», «ПолучитьФайлы», «ОписаниеПередаваемогоФайла»
1.На сервере получаю макет, передаю его на клиента через «ПоместитьВоВременноеХранилище»/»ПолучитьФайлы»
2. На клиенте формируется документ через COM : «Новый COMОбъект(«Word.Application»)»
3. На клиенте заполняется макет, тем или иным способом -
Offline
ExtreMe
Опытный в 1С- Регистрация:
- 13 сен 2014
- Сообщения:
- 89
- Симпатии:
- 8
- Баллы:
- 29
мой набор: win8.1 64x, Excel 2016 64х, 1c 8.3.13.1513 64х и текст обработки
Путь = Объект.ИмяФайла; // тип Строка Попытка ОбъектExcel = Новый COMОбъект("Excel.Application"); Исключение Возврат "Ошибка открытия MS Excel"; КонецПопытки; Попытка ОбъектExcel.WorkBooks.Open(Путь); Исключение ОбъектExcel.DisplayAlerts = 0; ОбъектExcel.Quit(); ОбъектExcel.DisplayAlerts = 1; ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Возврат ОписаниеОшибки; КонецПопытки;
проверил Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM->Microsoft Excel Application->Свойства->Удостоверение
Выбран «Текущий пользователь»Создал папку Desktop по обоим путям C:WindowsSysWOW64configsystemprofileDesktop и C:WindowsSystem32configsystemprofileDesktop
И хренасдва. всё равно выдаёт ошибку на стройке ОбъектExcel.WorkBooks.Open(Путь); и уходит в исключение
{ВнешняяОбработка.ЗагрузкаИзExcel.Форма.Форма.Форма(53)}: Ошибка при вызове метода контекста (Open) ОбъектExcel.WorkBooks.Open(Путь); по причине: Неизвестная ошибка
— Объединение сообщений, 17 янв 2019 —
попробовал под 1c 8.3.13.1513 86х, то же самое
после каждого запуска обработки в диспетчере остаётся висеть процесс Excel’я, я его каждый раз завершаюПоследнее редактирование: 17 янв 2019
-
Offline
ExtreMe
Опытный в 1С- Регистрация:
- 13 сен 2014
- Сообщения:
- 89
- Симпатии:
- 8
- Баллы:
- 29
одинаковая ситуация с тонким и толстым клиентом
-
Offline
ExtreMe
Опытный в 1С- Регистрация:
- 13 сен 2014
- Сообщения:
- 89
- Симпатии:
- 8
- Баллы:
- 29
пока решение нашёл в таком варианте:
открыть файл Excel
сделать поправки в кодеПуть = Объект.ИмяФайла; Попытка //ОбъектExcel = Новый COMОбъект("Excel.Application"); ОбъектExcel = ПолучитьCOMОбъект(, "Excel.Application"); Исключение ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Возврат ОписаниеОшибки; КонецПопытки; //Попытка // ОбъектExcel.WorkBooks.Open(Путь); //Исключение // ОбъектExcel.DisplayAlerts = 0; // ОбъектExcel.Quit(); // ОбъектExcel.DisplayAlerts = 1; // ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); // Возврат ОписаниеОшибки; //КонецПопытки;
так открытый файл подхватываться и нормально все работает, но хотелось ты без этих танцев с бубном…
— Объединение сообщений, 17 янв 2019 —
не совсем понял настройки безопасности
Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM->Microsoft Excel Application->Свойства->Безопасность
добавляя там пользователя, у меня то проходило чтение то нет
стабильной работы обработки при первом варианте кода не далоПоследнее редактирование: 17 янв 2019
-
Offline
ExtreMe
Опытный в 1С- Регистрация:
- 13 сен 2014
- Сообщения:
- 89
- Симпатии:
- 8
- Баллы:
- 29
Последнее редактирование: 20 янв 2019
-
Offline
evgkup
- Регистрация:
- 9 авг 2019
- Сообщения:
- 1
- Симпатии:
- 0
- Баллы:
- 1
Была аналогичная проблема на сервере
Помогло следующее (отображение открывающегося приложения excel)
Попытка
лпИмяФайла = «c:tmp1.xls»;
лпExcel = Новый COMОбъект(«Excel.Application»);
лпExcel.Visible = 1;
лпExcel.DisplayAlerts = 0;
лпExcel.WorkBooks.Open(лпИмяФайла);
Исключение
лпExcel.Quit();
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
…набор действийПоследнее редактирование: 9 авг 2019
Nikoly |
|
||
---|---|---|---|
При работе на сервере, регламентного задания, обработка открывает через Excel = Новый COMОбъект(«Excel.Application»); Excel.Application.Workbooks.Open(ИмяФайла) документ, мне выдается ошибка:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1СНовыйДокумент.xls’. Это может быть вызвано одной из следующих причин. • Имени файла или пути не существует. • Файл используется другой программой. • Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги. Если запускаю обработку не в регламентном задании, то все выполняется без ошибок. Подскажите что это за ошибка и как мне читать данные из Excel в регламентном задании? Изменено 16.07.11 15:32:46 по причине: Другая категория |
Yandex |
|
||
---|---|---|---|
Nikoly |
|
||
---|---|---|---|
http://forum.mista.ru/topic.php?id=522217 |
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему. |