Имя: Пароль:
1C
1С v8
Работа с эксель
0 Alekzander Wolf
 
25.11.16
06:38
Допустим есть такой код:

Попытка
Книга = Эксель.WorkBooks.Open(ИмяФайла);
Исключение
Возврат;
КонецПопытки;

Проблема в том что после выполнения строки Эксель.WorkBooks.Open(ИмяФайла) (когда ошибка! очень редко она есть и вообще не понятно от чего она зависит), то появляется ошибка windiows "отправлять отчет не отправлять", потом открывается пустой excel файл, а потом уже, когда я все это закрою падает в исключение.
Как сделать так, чтобы все сразу падало в исключение без всяких посторонних ошибок и открытых окон. Можно ли как-то до открытия книги понять откроется она нормально или есть ошибка.
1 Peltzer
 
25.11.16
07:42
По всей видимости, либо в COM-объекте что-то критически ломается, либо в Windows. Обратите внимание на текст ошибки windows и попытайтесь устранить причину.
2 shuhard_серый
 
25.11.16
07:44
(0)[Как сделать]
использовать ADODB
3 Alekzander Wolf
 
25.11.16
09:08
(2) подробнее можно
4 dka80
 
25.11.16
09:37
В конце закрываешь открытую книгу и убиваешь переменную "Книга"? Когда возникает ошибка несколько процессов Excel.exe в памяти случайно не висит?
5 Звездец
 
25.11.16
09:45
(3) на infostarte огромная статья есть про это и не только. Там еще описаны все возможные способы загрузки
6 Alekzander Wolf
 
25.11.16
09:47
(4) если сделать так

Попытка
Книга = Эксель.WorkBooks.Open(ИмяФайла);
Исключение
Эксель.WorkBooks.Close(); // Тут будет ошибка
Возврат;
КонецПопытки;

И исключение отработает только после того как все закроешь. до выполнения строки Книга = Эксель.WorkBooks.Open(ИмяФайла); естественно все закрыто.
7 Масянька
 
25.11.16
09:53
(6) У меня Word в клюшках так работает6
    ИначеЕсли (РасширениеФайла = "doc") Тогда
        // открываем файл                            
        Попытка
            мWord = СоздатьОбъект("Word.Application");
            мДок = мWord.Documents.Open(ИмяФайла);  
            // активируем Word
            мWord.Visible = 1;
            мWord.Application.WindowState = 2;
            мWord.Application.WindowState = 1;
        Исключение
            мWord.Quit();
            Предупреждение(ОписаниеОшибки());
        КонецПопытки;

Не валится.
8 Мимохожий Однако
 
25.11.16
10:03
Прежде чем открывать файл в Экселе, полезно проверять существование этого файла, а также наличия на рабочем месте самого экселя.
9 Alekzander Wolf
 
25.11.16
10:05
(8) все есть, все работает. Как написал выше эта ошибка относительно редко появляется в 3-5% случаях (что конечно достаточно чтобы обратить на это внимание).