Имя: Пароль:
1C
1C 7.7
v7: По команде Эксель.Quit() закрываются даже те xls-файлы, которые я не открывал
0 IgorTrifonov
 
04.09.11
09:58
Всем здрасьте, можно сказать доброе утро, короче спасибо.

   Попытка
       XL = СоздатьОбъект("Excel.Application");
   Исключение
       Сообщить("Не смог загрузить Excel!");
       Сообщить(ОписаниеОшибки());
       Перейти ~выход;
   КонецПопытки;

создал файлик,  заполнил его,  сохранил
   XL.WorkBooks.Add();
   ...
и в конце пишу
   XL.Quit();
   XL = ПолучитьПустоеЗначение();

и все экселевские файлы какие были открыты, бац и закрылись.

Научите пожалуйста, как жить дальше.
1 Нуф-Нуф
 
04.09.11
10:01
Close?
2 IgorTrifonov
 
04.09.11
10:07
книгу я закрываю,
   XL.WorkBooks.Close();
но excel-то надо выгрузить из памяти?
3 Kookish
 
04.09.11
10:11
(2) Из какой памяти? Если из 1С, то, думаю, достаточно
   XL = ПолучитьПустоеЗначение();
А если закрываешь весь Excel, не удивляйся, что он весь и закроется. Про MDI слышал когда-нибудь?
4 IgorTrifonov
 
04.09.11
10:19
Я-то не удивляюсь, пользователи в шоке. Почему excel-файлы, говорят закрываются даже те которые не имеют отношения к моей программе. Что я им про MDI буду рассказывать?
5 Kookish
 
04.09.11
10:24
Ну так не закрывайте Excel. Делов-то.
6 Kookish
 
04.09.11
10:25
Ну, или можно проверить: если данный файл один-единственный, то закрывать совсем. А если несколько открыто, то не закрывать.
7 IgorTrifonov
 
04.09.11
10:29
Понял, спасибо. А с помощью переменной XL.??? как-то можно узнать открыты файлы или нет вообще?
8 Kookish
 
04.09.11
10:31
(7) Точно не скажу, но что-то мне подсказывает, что копать нужно в сторону XL.WorkBooks.Count или вроде того.
9 Темный Эльф
 
04.09.11
10:31
(7)Коллекция Workbooks, не?
10 IgorTrifonov
 
04.09.11
10:33
Большое сапасибо. В принципе ведь знал же. Эх.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший