Не закрывается Excel.Application

1. alex-l19041 8 05.12.16 18:32 Сейчас в теме
Открываю Excel, считываю... на Close() зависает...

Пробовал убрать Close().
Все работает, но в процессах зависает Excel...

Может кто сталкивался ?


Excel = Новый COMОбъект("Excel.Application");
		Excel.WorkBooks.Open(ИмяФайла);

....
Excel.WorkBooks.Close();
По теме из базы знаний
Найденные решения
20. Nevskiy 06.12.16 19:01 Сейчас в теме
Попробуйте

Excel.DisplayAlerts = 0;

сразу после создания объекта.
Новичок1с; maslyann; viktor_and_ko; Alexsh_kz; barbosych; POPOK.BIZ; hottion; 6385232; Innuil; t_yuri; shaman.nk; belochkaNN; METAL; svilsa; user639498_dar8313; bav123; tehas; +17 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Fox-trot 158 05.12.16 19:52 Сейчас в теме
(1) обычно эта проблема возникает при Application.Visible = .F. а в экселе открыто окно диалога
хотя конечно причин может быть 100500
так вот возможно достаточно указать екселю, что файл нужно закрыть без сохранения
6. alex-l19041 8 06.12.16 10:10 Сейчас в теме
(3)
экселе открыто окно диалога
- скорее всего... И как это закрыть, не показывая пользователю ?
7. корум 287 06.12.16 10:12 Сейчас в теме
(6)
лучше его сразу readonly открывать,
9. alex-l19041 8 06.12.16 11:00 Сейчас в теме
(7)попробовал ... не помогло...
2. JohnGalt 57 05.12.16 18:46 Сейчас в теме
Ексель.Application.Quit();

Или в худшем случае можно и taskkill использовать
4. Fox-trot 158 05.12.16 19:54 Сейчас в теме
(2)
taskkill использовать
а почему не сразу Ctrl+Alt+Del
5. ADirks 186 06.12.16 06:10 Сейчас в теме
лучше его сразу readonly открывать, и чтобы не пытался внешние ссылки ресольвить: Excel.Workbooks.Open(Путь, 2, True);
а то спрашивает всякое ненужное
ну и да, .Visible = True - это по любому, а то заколебёшься потом задачи снимать. А так хоть пользователь сам сможет его прикрыть.
8. ImHunter 315 06.12.16 10:55 Сейчас в теме
А можно и через ADO читать. Это про XLS (97-2003).
	Функция ПолучитьКоннектExcel( пИмяФайла, пВызватьИсключение = Ложь ) Экспорт
	
	лРез = Новый COMОбъект("ADODB.Connection");
    СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + пИмяФайла + 
		"; Extended Properties = " + """Excel 8.0"+";HDR=NO;IMEX=1"";";
    
    //подключение к источнику данных
    Попытка
        лРез.Open(СтрокаПодключения);
		Возврат лРез;
	Исключение
		Если пВызватьИсключение Тогда         
			лТекстОшибки = ОписаниеОшибки();
			лФайл = Новый Файл( пИмяФайла );
			Если ВРег( лФайл.Расширение )=".XLSX" Тогда 
				лТекстОшибки = лТекстОшибки + Символы.ПС + "Сохраните загружаемый файл в формате MS Excel 97-2003 (*.XLS) и попробуйте выполнить загрузку снова.";
			КонецЕсли;
			ВызватьИсключение( лТекстОшибки );
		Иначе 
			Возврат Неопределено;
		КонецЕсли;
	КонецПопытки;
	
КонецФункции

// функция возвращает список значений листов книги Excel
// на входе передается коннект к файлу (см. ПолучитьКоннектExcel)
Функция ПолучитьСписокЛистов( пКоннект ) Экспорт
	
	лСписок = Новый СписокЗначений;
 	лКаталог = Новый COMОбъект("ADOX.Catalog");                                                
    лКаталог.ActiveConnection = пКоннект;
    
    Для Каждого лЛист ИЗ лКаталог.Tables Цикл
		лСписок.Добавить( лЛист, Лев( лЛист.Name, СтрДлина( лЛист.Name ) - 1 ) );
	КонецЦикла;	
	
	Возврат лСписок;
	
КонецФункции

Функция ПолучитьДанныеЛиста( пКоннект, пЛист ) Экспорт
	
	лКоманда = Новый COMОбъект("ADODB.Command");
	лКоманда.ActiveConnection = пКоннект;

	лКоманда.CommandText = "SEL ECT * FR OM ["+ пЛист.Name + "]";
	лКоманда.CommandType = 1;
	лНаборДанных = Новый COMОбъект("ADODB.RecordSet");				
	лНаборДанных = лКоманда.Execute();
	лНаборДанных.MoveFirst();
	
	Возврат лНаборДанных;
	
КонецФункции

Процедура ПерейтиКСтроке( пНаборДанных, пНомерСтроки ) Экспорт
	
	пНаборДанных.MoveFirst();
	Для лНомерСтр = 1 По пНомерСтроки - 1 Цикл 
		пНаборДанных.MoveNext();	
	КонецЦикла;
	
КонецПроцедуры

Процедура ПерейтиКСледующейСтроке( пНаборДанных ) Экспорт 
	пНаборДанных.MoveNext();	
КонецПроцедуры

Функция ДостигнутКонецНабора( пНаборДанных ) Экспорт
	Возврат пНаборДанных.EOF <> 0;
КонецФункции

// функция возвращает соответствие с данными строки
Функция ПолучитьДанныеСтроки( пНаборДанных ) Экспорт
	
	лРез = Новый Соответствие;
	
	Для Каждого лПоле из пНаборДанных.fields цикл
		лРез.Вставить( лПоле, лПоле.value );
	КонецЦикла;
	
	Возврат лРез;
	
КонецФункции

Функция ПолучитьПоляЛиста( пНаборДанных ) Экспорт 
	
	лРез = Новый Массив;
	Для Каждого лПоле из пНаборДанных.fields цикл
		лРез.Добавить( лПоле );
	КонецЦикла;
	
	Возврат лРез;
	
КонецФункции
Показать

XLSX - через XML можно прочитать. Из БСП копировал себе такой код, обработка ЗагрузкаДанныхИзФайла
10. BigBoss 2 06.12.16 13:41 Сейчас в теме
Может проблема в эксель быть.
11. runlikehell 06.12.16 14:29 Сейчас в теме
Можно попробовать.

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



Excel.Quit();
13. alex-l19041 8 06.12.16 15:21 Сейчас в теме
12. DJDUH 17 06.12.16 14:31 Сейчас в теме
14. alex-l19041 8 06.12.16 15:21 Сейчас в теме
15. alex-l19041 8 06.12.16 15:22 Сейчас в теме
с другой стороны, один зависший процесс сильно не помешает...
16. Vitaly1C8 06.12.16 15:52 Сейчас в теме
Если не помогает ... Excel = Неопределено; Тогда как вариант, - проверьте не установлены ли в эксель файле фильтры по колонке ?! Юзеры любят ставить фильтры )
17. alex-l19041 8 06.12.16 16:19 Сейчас в теме
(16) фильтров нет.

Но мне не понятно, что делает эксель...
только открыл файл, ничего не делал и уже при закрытии предлагает сохранить изменения ...
18. Fox-trot 158 06.12.16 18:25 Сейчас в теме
(17) закрывать без сохранения пробовал?
19. alex-l19041 8 06.12.16 18:26 Сейчас в теме
(18) вручную - да.

программно надо
20. Nevskiy 06.12.16 19:01 Сейчас в теме
Попробуйте

Excel.DisplayAlerts = 0;

сразу после создания объекта.
Новичок1с; maslyann; viktor_and_ko; Alexsh_kz; barbosych; POPOK.BIZ; hottion; 6385232; Innuil; t_yuri; shaman.nk; belochkaNN; METAL; svilsa; user639498_dar8313; bav123; tehas; +17 Ответить
21. alex-l19041 8 07.12.16 10:20 Сейчас в теме
22. svilsa 12 15.01.19 13:43 Сейчас в теме
Помогло
Excel.DisplayAlerts = 0;
На новых версиях Excel после закрытия файла, постоянно отображался вопрос "Сохранить изменения?", а изменений - не было
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот