Workbooks open неизвестная ошибка

   Mikhail Volkov

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

Как побороть проблему?

   OldCondom

1 — 14.02.19 — 18:27

Так измени код, где он там путь выбирает.

   OldCondom

2 — 14.02.19 — 18:27

вместо КаталогВременныхФайлов() подставь свое

   Mikhail Volkov

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

Присвой путь какой-нибудь переменной и убедись, что значение из отладчика является реальным и доступным

   Garykom

5 — 14.02.19 — 19:52

>стала появляться Неизвестная ошибка

Признавайтесь что меняли что стала ошибка появляться? Одмины с правами на сервере не игрались?

   Mikhail Volkov

6 — 14.02.19 — 20:21

(5) Говорят ничего, только обновления ставились.

   _Дайвер_

7 — 14.02.19 — 20:25

(6) бздят

   Mikhail Volkov

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С?

   Garykom

9 — 15.02.19 — 07:06

(8) Ты понимаешь что сервер 1С запускается от другого юзера не от того что клиент 1С ?

Или у вас там файловая база?

   Mikhail Volkov

10 — 15.02.19 — 08:03

(9) Рабочая база SQL, а отлаживаю в файловой копии — одна и та же ошибка:

{ОбщаяФорма.Отчет.Форма(963)}: Ошибка при вызове метода контекста (Open)

        Excel.Workbooks.Open(КаталогВременныхФайловExcel);

по причине:

Неизвестная ошибка

и для расширения xls, и для xlsx.

Где в системе назначается КаталогВременныхФайлов()? Хочу ее поменять, хотя бы под собой для проверки.

   Mikhail Volkov

11 — 15.02.19 — 10:27

К https://jpegshare.net/e7/32/e7329ffaad896b0109bb8f5689f1e368.jpg.html

Каталог D:UsersmvAppDataLocalTemp3 и D:UsersmvAppDataLocalTemp не дает сохранить в Надежное расположение. А папку D:UsersmvAppDataLocal дало с галочкой «Также доверять всем вложенным папкам». Но Неизвестная ошибка осталась. Видимо добавить КаталогВременныхФайлов() в Надежное расположение расположение мало… что-то еще. А что?

   Mikhail Volkov

12 — 16.02.19 — 05:22

Сисадмины удалили все обновления после 13.02.2019. К сожалению не помогло, Неизвестная ошибка осталась.

   hhhh

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

Используй ПолучитьИмяВременногоФайла()

Потом переименовывай куда удобно

   Mikhail Volkov

15 — 16.02.19 — 10:43

(13) Пробовал — ошибка в (0): «Не удается открыть файл «tmpxls.xlsx», так как формат или расширение этого файла являются недопустимыми…» из-за того, что в команде: ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS); заменил только одно расширение. А оба заменил на xlsx, то как прежде «Неизвестная ошибка».

   Necessitudo

16 — 16.02.19 — 22:13

Может таки покажешь полный код, а не будешь кусочки вываливать?

   Mikhail Volkov

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;

КонецПроцедуры

   hhhh

18 — 17.02.19 — 07:32

(17) почему тип html?

   Mikhail Volkov

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()

   hhhh

20 — 17.02.19 — 09:50

(17) здесь уберите HTML

      ДокументРезультат.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.HTML);

давайте эти эксперименты на потом.

   Mikhail Volkov

21 — 18.02.19 — 06:14

А типовых конфигурациях: УПП, КА1, КА2 есть подобные функции открытия в MS Excel табличного документа или отчета (не использую)? Чтобы понять: эта проблема чисто Альфа-Авто, или безопасности MS Excel 2010…

   Mikhail Volkov

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)? Когда его можно открывать, после какой команды?

   AllJoke

23 — 18.02.19 — 17:23

Он у вас должен в исключение попасть.

   AllJoke

24 — 18.02.19 — 17:23

Попытка

            Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);

если это не работает, тогда в исключение

Исключение

            Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls

                     |    — » + ОписаниеОшибки(), СтатусСообщения.Внимание);

            ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());

   AllJoke

25 — 18.02.19 — 17:25

Первый раз не получилось открыть, ну и пусть. Откроем второй раз. Зачем?

Попытка

        Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);

    Исключение

        Сообщить(«Ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls

                 |    — » + ОписаниеОшибки(), СтатусСообщения.Внимание);

        ОшибкаОткрытия = Истина;

    КонецПопытки;    //-МВ

………………..

Попытка

            Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);

        Исключение

            Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls

                     |    — » + ОписаниеОшибки(), СтатусСообщения.Внимание);

            ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());

        КонецПопытки;

   AllJoke

26 — 18.02.19 — 17:27

ОшибкаОткрытия = Ложь;    //+МВ 18.02.2019

    Попытка

        Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);

    Исключение

        Сообщить(«Ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls

                 |    — » + ОписаниеОшибки(), СтатусСообщения.Внимание);

        Excel = Неопределено;

        Возврат;//ОшибкаОткрытия = Истина;

    КонецПопытки;    //-МВ

И ещё надо глянуть запущены ли процессы Эксель на сервере. Возможно оин заняли ваш файл «tmpxls»

   Mikhail Volkov

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-м отчетом.

   Mikhail Volkov

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?

   Mikhail Volkov

29 — 19.02.19 — 11:31

(21) Перенес функцию (19) из Альфа-Авто в УПП/КА1, та же самая ошибка:

{ОбщийМодуль.УправлениеОтчетами.Модуль(1753)}: Ошибка при вызове метода контекста (Open)

    Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);

по причине:

Неизвестная ошибка

Функция кривая или дело в Excel?

   Mikhail Volkov

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)?

  1. 20.12.2016, 13:59


    #1

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию COM-объект и Excel

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

    Ошибка при вызове метода контекста (Open)
    ex.WorkBooks.Open(Файл);
    по причине:
    Неизвестная ошибка
    Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
    Если что-то с Excel, то что?


  2. 20.12.2016, 15:25


    #2

    avm3110 вне форума


    Гордость форума 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-х разрядного сервера)?


  3. 20.12.2016, 15:55


    #3

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

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


  4. 20.12.2016, 16:31


    #4

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    А попробуй «завернуть» в Попытку

    Что выдаст?

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


  5. 20.12.2016, 17:04


    #5

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

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


  6. 20.12.2016, 17:25


    #6

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

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

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

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

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

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


  7. Пользователь сказал cпасибо:


  8. 20.12.2016, 17:41


    #7

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

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


  9. 13.09.2018, 12:20


    #8

    KrisLis вне форума


    Гость форума


    По умолчанию Re: COM-объект и Excel

    Цитата Сообщение от lilyapo
    Посмотреть сообщение

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

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


  10. 13.09.2018, 13:10


    #9

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

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

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

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


  1. Доброе время суток.
    Проблема заключается в следующем внешняя обработка загрузки из Эксель на личном компьютере работает нормально, но на РДП выдает ошибку «ошибка при вызове метода контекста (open)» там и там база файловая.Переделал все что нашел в инете
    — создал папку C:WindowsSysWOW64configsystemprofileDesktop ;
    — Настройки DCOM добавил пользователя;
    — И проделал «А решается это так:
    на сервере убиваем excel (taskkill /im excel.exe /f)
    открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
    в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
    справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем «Текущий пользователь», ОК.
    Готово»
    И все равно выскакиваю по ошибке.
    Есть у кого то предложение что можно сделать еще.


  2. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    покпжите текст ошибки полностью.
    из всего там нужно только последнее действие.

    что будет, если интерактивно запустить эксель и открыть этот же файл?

  3. {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (Open)
    КНИГА = Excel.WorkBooks.Open(ИмяФайла);
    по причине:
    Неизвестная ошибка

  4. Запустил интерактивно и все равно ошибка
    Опечатки нет пере набрал Open раз 10


  5. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    при интерактивном открытии файла, что говорит?

  6. Доброго,
    Клиент какой запускается на RDP, 32/64 бит ?

  7. Добрый день.При интерактивном открытии ничего не пишет.
    RDP клиент запускается 64 и офис 64

  8. Похожая проблема вылечилась использованием 32 битного клиента (мы можем это себе позволить),
    еще, как вариант, я делал через формирование файла на сервере и передачу его на клиента
    С.П.- : «ПоместитьВоВременноеХранилище», «ПолучитьФайлы», «ОписаниеПередаваемогоФайла»
    1.На сервере получаю макет, передаю его на клиента через «ПоместитьВоВременноеХранилище»/»ПолучитьФайлы»
    2. На клиенте формируется документ через COM : «Новый COMОбъект(«Word.Application»)»
    3. На клиенте заполняется макет, тем или иным способом


  9. ExtreMe

    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

  10. ExtreMe

    Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    одинаковая ситуация с тонким и толстым клиентом


  11. ExtreMe

    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

  12. ExtreMe

    Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    Последнее редактирование: 20 янв 2019

  13. evgkup

    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


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Решение данной проблемы. Дело действительно оказалось в настройках безопасности Excel.

Файл->Параметры->Центр управления безопасностью->Параметры центра упраления безопасностью. Выбираете пункт «Надежные расположения» и добавляете папку, куда 1с-кой пишутся темповские файлы экселя (в конфигураторе; КаталогВременныхФайлов() -> «C:Temp»).

Однако тут возникла 2-я проблема. Данную папку Excel ни в какую не захотел добавлять в доверенные (не поленился и проверил, что проблема именно в данной настройке — в коде жестко поменял КаталогВременныхФайлов() на тестовую «D:Temp» + прописал ее в доверенные (Excel дал добавить); сформированный Excel файл без ошибок вывелся в АА5 (~4500 строк)).

2-я проблема оказалась более серьезной. Как я понял, Excel считает темповские файлы в принципе не «заслуживающими» доверия (на системном уровне). Лечится это правками соответствующих веток реестра. Но при большом количестве пользователей (100 и более) — не наш вариант.

В итоге пришел к решению проблемы корректировкой кода, причем есть 2 варианта:
изменить папку выгрузки (см. вышеописанное)

Код
// -->
//ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + "tmpxls.xls", ТипФайлаТабличногоДокумента.XLS);
//Excel.Workbooks.Open(КаталогВременныхФайлов() + "tmpxls.xls");
КаталогВременныхФайлов = "D:Temp";
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов + "tmpxls.xls", ТипФайлаТабличногоДокумента.XLS);
Excel.Workbooks.Open(КаталогВременныхФайлов + "tmpxls.xls");
// <--

или формат формируемых файлов (с «новыми» расширениями проблема не возникает)

Код
// -->
//ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + "tmpxls.xls", ТипФайлаТабличногоДокумента.XLS);
//Excel.Workbooks.Open(КаталогВременныхФайлов() + "tmpxls.xls");
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов + "tmpxls.xlsx", ТипФайлаТабличногоДокумента.XLSX);
Excel.Workbooks.Open(КаталогВременныхФайлов + "tmpxls.xlsx");
// <--

P.S. Считаю данную проблему достаточной для обращения к разработчикам и внесения ими доработок, т.к. ПП эволюционируют (2003, 2007, 2010, 2013, 2016) и раз предусмотрена интеграция, должно быть и предусмотрена работа с различными версиями ПП (например анализ ПП и формирования расширения файла в зависимости от этого).

P.S.S. Тем более на форуме поддержки Microsoft, касательно данной проблемы, посоветовали обращаться к разработчикам сторонних ПП, чтобы они учитывали все эти нюансы (т.е. опять возвращаемся к разработчикам АА).

Изменено: Алексей Коломыйченко11.03.2016 17:46:35

0

14.02.2019 — 09:24


Не думал, что возникнет такая проблема. Файлов Excel перечитал уже несметное количество. У клиента из УТ11 моей обработкой закачивается прайс, все работало уже пару лет и вот после нового выдает ошибку при открытии файла. Пишет, что «неизвестная ошибка»
Какие отличия от того года:
1.Обновил платформу на 8.3.12.1685(в ней появились косяки с функционированием горячих клавиш и правой кнопки мыши. На 8.3.13.1690 приложение вообще периодически вылетало). Пока вернулись к 8.3.12.1685
2. Обновили УТ до 11.4.6.188
3. Excel 2010 при открытии руками выдавал сообщение про сбой активации. Говорит, что устранил, сегодня я еще не проверял.
Прайс не закачивается, ошибка не ушла
У меня на компе этот же файл прекрасно обрабатывается, но у меня стоит старый, добрый Excel 2007

1

14.02.2019 — 09:51

Как читаешь то? ТабДок.Прочитать()?

2

14.02.2019 — 09:59

(1)до чтения не доходит, файл перестал открываться
Попытка
Excel = Новый COMОбъект(«Excel.Application»);
WB = Excel.Workbooks.Open(ПутьКФайлу);

3

14.02.2019 — 10:31

Попробуй зарегистрировать comcntr.dll из 8.3.12.1685.

4

14.02.2019 — 10:34

(3)попробую вечером, но я ранее никогда такого не делал,
без этого работало. Вот для обмена ЗУП И БП, действительно требуется регистрация

5

14.02.2019 — 10:38

Цитата:

Сообщение от USSR Посмотреть сообщение

Пока вернулись к 8.3.12.1685

Если это означает изменение настроек запуска — то работаешь из 8.3.12.1685 а comcntr.dll из 8.3.13.1690

6

14.02.2019 — 10:39

C:Program Files (x86)1cv8[версия платформы]bincomcntr.dll

7

14.02.2019 — 10:54

2-USSR > куда не доходит? 1С умеет читать эксель без всяких комобъектов

8

14.02.2019 — 11:07

Цитата:

Сообщение от USSR Посмотреть сообщение

3. Excel 2010 при открытии руками выдавал сообщение про сбой активации.

Ну дык от этого и плясать.
мс офис просто так от нечего делать такие сообщения не станет выдавать.

Цитата:

Сообщение от USSR Посмотреть сообщение

Говорит, что устранил,

типа крякнул повторно еще раз :)))

В идеале снести офис, слегка подчистить реестр (типа RegCleaner), перезагрузить и поставить офис заново.

9

14.02.2019 — 11:23

(7)я знаю, но все работало и переделывать не хочется
(4)я это знаю, я же написал, попробую, но по моему не в этом дело
(8)готов со всем согласиться. я не знаю как и кто там крякал ))

10

14.02.2019 — 12:02

Цитата:

Сообщение от USSR Посмотреть сообщение

до чтения не доходит, файл перестал открываться

А может быть проблема в том, что данный файл на тот момент уже открыт?
Доводилось сталкиваться с ситуацией, что открытый экселовский файл никак визуально не отображается.
Приходилось открывать какой-нибудь другой экселовский файл, чтобы увидеть ранее открытый файл. После чего этот файл вручную закрывал. А дальше — все работало, как положено.

11

14.02.2019 — 12:15

(10)в диспетчере задач Excel процесса не было

12

14.02.2019 — 12:35

11-USSR > Через диспетчер задач возникшую у меня проблему не рассматривал…
Хохмы ради, можно открыть какой-нибудь другой экселовский файл. Если проблемный файл никак не проявит себя, то это другой случай.

13

15.02.2019 — 04:26

C:Program Files (x86)1cv8[версия платформы]bincomcntr.dll — регистрация ожидаемо не помогла
Установил 8.3.14, переустановил Excel, с удалением предыдущего, но без рекомендуемой уважаемыми БШ и самим Excel (не было возможности удаленно это сделать без потери связи), пока ничего не помогло.
На моем компе все работает, даже на другой конфигурации. Но в реестре старый офис остался и еще кое где, начисто он не удалился

14

15.02.2019 — 17:41

Цитата:

Сообщение от USSR Посмотреть сообщение

регистрация ожидаемо не помогла

Что значит ожидаемо. Если все случилось после манипуляций с платформой то comcntr.dll первый в рядах подозреваемых. К то же начинать надо с самого простого. Дальше попробуй написать ПолучитьCOMОбъект(, «Excel.Application»). Первый параметр пустой. Если ошибка — то проблема не с файлом. Попробуй создать другие ком объекты (тот же word или 1С). Что бы уже точно понимать где ошибка.

15

15.02.2019 — 20:37

(14)Ожидаемо — это то, что COM объект создается, но файд не открывается, я об этом сразу написал. И я никогда не регистрировал эту компоненту для целей чтения из Excel. Вот например для связи разных баз по COM — это да

16

16.02.2019 — 08:38

Короче, не выходит каменный цветок. С помощью MicrosoftProgram_Install_and_Uninstall вроде бы вычистил Office 2010. Снес Оffice 2007. Снова поставил. Интерактивно файлы открываются мгновенно и без проблем. Скопировал базу к себе на комп. Все работает, причем для обоих установленных у меня офисов (2003,2007). При создании COM объекта указывал и Excel.Application и Excel.Application.11 и Excel.Application.12.
У проблемного человека так и не работает. При открытии файла «Неизвестная ошибка». И у него и у меня Windows 7 msx. Пока единственное отличие нашел в том, что у него есть служба Office Software Protection Control. Я ее и останавливали запускал, никакого эффекта. Надо вечером попробовать открыть файл Word. Какая то засада. В инете эта тема встречается, но она мусолится вокруг клиент-серверной 1с, у меня файловая. В службах компонентов DCOM Excel не нашел, ни по имени, ни по идентификатору продукта. У меня на компе тоже не нашел.

17

17.02.2019 — 10:07

Сделал вариант на ADO. Визуально кажется несколько медленнее. Но причину бунта Excel.Application надо найти

18

17.02.2019 — 10:27

Ты пробовал ПолучитьCOMОбъект(, «Excel.Application») (При включенном Excel) и ПолучитьCOMОбъект(«», «Excel.Application») ?

19

17.02.2019 — 10:56

(18)Нет, я так не пробовал. Посмотрю на досуге. Но вариант не очень, читать из уже открытого файла. Тем более в моей обработке возможна обработка сразу с двух файлов, есть там некоторые особенности ценообразования.
Хотелось бы все-таки выбрать имена файлов и просто нажать кнопочку «Заполнить», как было раньше ) Как и у меня на компе, пробовал и на другой тачке на WIN 2008 Server.

20

17.02.2019 — 11:31

(18)Попробовал. Заполнение из открытого файла с помощью ПолучитьCOMОбъект(, «Excel.Application») работает

21

17.02.2019 — 11:38

(18)а так тоже не работает:
Excel = ПолучитьCOMОбъект(«», «Excel.Application»);
WB = Excel.Workbooks.Open(ПолноеИмяФайла);

22

19.02.2019 — 14:17

Цитата:

Сообщение от Uho Посмотреть сообщение

2-USSR > куда не доходит? 1С умеет читать эксель без всяких комобъектов

Цитата:

Сообщение от USSR Посмотреть сообщение

(7)я знаю, но все работало и переделывать не хочется

Цитата:

Сообщение от USSR Посмотреть сообщение

Сделал вариант на ADO. Визуально кажется несколько медленнее.

?????

23

19.02.2019 — 14:44

(22) ну что непонятно, время идёт, а прайсы не заканчиваются. Пришлось переделать. Но это не путь к успеху. Причина так и не выяснена

24

19.02.2019 — 15:23

23-USSR > если переделывать, почему не средствами 1С?

25

19.02.2019 — 16:42

(24)Тоже средствами 1с, но без Excel.Application
Connection = Новый COMОбъект(«ADODB.Connection»);

и тд.)

26

19.02.2019 — 18:43

ADODB — средство 1С? ну-ну
ЗЫ. Раз уж переписывал, переписал бы по-нормальному

27

19.02.2019 — 19:49

(27)это вопрос терминологический. 1с под виндой позволяет мне создать этот объект, значит можно считать что средствами 1с) а как по нормальному?) Если честно, то мне больше всего нравится именно excel.applicstion, попадались прайсы, которые без него мне не обработать.

28

19.02.2019 — 21:42

ТабличныйДокумент.Прочитать() пару лет с 8.3.8 вроде бы точно юзаем

29

19.02.2019 — 22:12

(28)Этот пробел в знаниях обязательно закрою, но Excel.Application все равно бывает нужен ) И на чтение, и на запись. На 7.7 много чего с ним. Правда и обсуждаемый казус тоже впервые, может никогда и не повторится.

30

20.02.2019 — 09:02

Недавно наткнулся что Табличный документ 1с 8.3.12 не прочитало, а COM Excell Application прочитал — под расширением xls была сохранена страница html. Excell ругнулся, что формат не его, но все же открыл. А так многие выгрузки переделал, в разы ж быстрее читает.

31

01.03.2019 — 16:49

23-USSR > Как вариант, может быть проблема заполнения шапки документа.
Тоже наблюдал случай, когда Excel не мог начать чтение документа. По подозрению проблемы в шапке — очистил шапку и подменил на шапку из читаемого файла — чтение прошло нормально. — Вероятно, при формировании шапки документа, в шапку прошли недокументированные символы.

32

01.03.2019 — 17:13

Цитата:

Сообщение от perpetum Посмотреть сообщение

Тоже наблюдал случай, когда Excel не мог начать чтение документа

Даже пустой файл создать не может. Там проблема с разрешениями (ИМХО). Решается большим бубном.

33

01.03.2019 — 18:36

(31)Про какую шапку Вы говорите ? я не понял. Файл вообще не открывается. Причем пробовал этот же файл читать еще на 4 компах, 3 в терминале. Все работает. Интерактивно и на проблемном компе открывается и даже читается по COM.Но только предварительно открытый

Возможно, вам также будет интересно:

  • Work light on ошибка рено премиум
  • Wordpress шаблон ошибки 404
  • Wordpress произошла непредвиденная ошибка попытаться восстановить скопировать текст записи
  • Wordpress при обрезке изображения произошла ошибка svg
  • Wordpress плагин нашли ошибку

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии