Имя: Пароль:
1C
1С v8
Закрыть файл Excel
0 sovsemnovichek
 
12.09.13
10:51
есть процедура, которая работает с файлом Excel


Процедура ЗагрузитьНажатие(Элемент)
        
    Если ИмяФайла = "" Тогда
        Сообщить("Вы не выбрали файл");
    КонецЕсли;
    
    
    Попытка
        Состояние( "Загрузка Microsoft Excel..." );
        ExcelПриложение = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат;
    КонецПопытки;
    
    Попытка
        Состояние("Открытие файла Microsoft Excel...");
        ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
    Исключение
        Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецПопытки;
    
    Попытка
        Состояние("Обработка файла Microsoft Excel...");
        ExcelЛист = ExcelФайл.Sheets(1);
        xlCellTypeLastCell         = 11;
        КоличествоСтрок         = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
        КоличествоКолонок         = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
    Исключение
        Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецПопытки;
    
        Если КоличествоСтрок < 2 И КоличествоКолонок < 4 Тогда
        Сообщить("Неверный формат данных!" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецЕсли;

    
    ТабличноеПоле.Очистить();
    
    Если (РКод = 0) ИЛИ (РНаименование = 0) ИЛИ (РКоличество = 0) Тогда
        Сообщить("Вы не произвели необходимые настройки!");
    КонецЕсли;
    
    Для Row  = 2 По КоличествоСтрок Цикл  
        
        КолКод                     = ExcelПриложение.Cells(Row,РКод).Value;    
        КолонкаАртикул             = ExcelПриложение.Cells(Row,РАртикул).Value;
        КолонкаНоменклатура     = ExcelПриложение.Cells(Row,РНаименование).Value;
        КолонкаКоличество        = ExcelПриложение.Cells(Row,РКоличество).Value;
      
    
    КолСтрока =  Формат(КолКод,"ЧГ=0");
    КолАрт    =  Формат(КолонкаАртикул,"ЧГ=0");
    
            
    ТаблицаИтог = ТабличноеПоле.Добавить();
    
    ТаблицаИтог.Код             = КолСтрока;
    ТаблицаИтог.Артикул         = КолАрт;
    ТаблицаИтог.Наименование     = КолонкаНоменклатура;
    ТаблицаИтог.Количество         = КолонкаКоличество;
    
    
КонецЦикла;

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




Проблема такая: почему, когда каждый раз выполняется процедура файл не закрывается, а так и остается открытым...? И каждый раз открывается заново, комп начинает, естественно сильно тормозить... Как решить эту проблему?
1 cw014
 
12.09.13
10:53
Quit без параметров. При возникновении изменений, он требует от "юзверя" сказать, что с ними делать (закрыть, сохранить или отмена)... В итоге процесс подвисает
2 mikecool
 
12.09.13
10:55
чтобы файл закрылся, надо уничтожить все объекты типа воркбук или воркшит, открытые из него
3 le_
 
12.09.13
10:56
ExcelПриложение = Неопределено;
4 Формат
 
12.09.13
10:56
так попробуй ExcelПриложение.ActiveWorkbook.Close();
5 le_
 
12.09.13
10:57
(3) Нужно вставить после:
ExcelПриложение.Quit();
6 cw014
 
12.09.13
10:57
Объект = Новый COMОбъект("Excel.Application");
Объект.DisplayAlerts = Ложь;
Объект.Quit();
7 wPa
 
12.09.13
10:58
ExcelПриложение  = NULL;
8 sovsemnovichek
 
12.09.13
11:01
Ага) будем пробовать
9 sovsemnovichek
 
12.09.13
11:13
Хорошо, файл каким-то странным образом стал закрываться, хотя я ничего не делал =D, но теперь куча процессов Excel остается, что такое?
10 mikecool
 
12.09.13
11:14
(9) смотри (2)
11 sovsemnovichek
 
12.09.13
11:16
(4) это так делается да?
12 cw014
 
12.09.13
11:16
(9) смотри (6) - 100% рабочее
13 sovsemnovichek
 
12.09.13
11:21
рычит


{Форма.Форма.Форма(49)}: Ошибка при вызове метода контекста (Quit)
        ExcelПриложение.Quit();
по причине:
Неизвестная ошибка
14 sovsemnovichek
 
12.09.13
11:22
Попытка
        Состояние("Открытие файла Microsoft Excel...");
        ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
    Исключение
        Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
        Возврат;
    КонецПопытки;



Здесь вот рычит
15 sovsemnovichek
 
12.09.13
12:04
(6) не работает, не получается почему-то
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс