Виснет процесс Excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
metall_2000
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 25.08.2003 (Пн) 17:37
Откуда: Москва

Виснет процесс Excel

Сообщение metall_2000 » 12.02.2005 (Сб) 19:34

Пишу прогу для записи в Excel данных из текстовых файлов. Вот ее "проблемная" часть:

Dim xl As Excel.Application
Dim strListName As String
Set xl = CreateObject("Excel.Application")
xl.SheetsInNewWorkbook = 1 'Количествр листов 1
xl.Workbooks.Add
xl.Visible = False
strListName = xl.ActiveWorkbook.Sheets(1).Name 'Получаю текущее имя листа
xl.ActiveWorkbook.Worksheets(strListName).Select
xl.ActiveWorkbook.Worksheets(strListName).Name = ExcelMake.FormType 'Новое имя листа

' Далее идет код записи данных в ячейки Excel

xl.ActiveWorkbook.SaveAs ExcelMake.FileName 'Сохраняю книгу
xl.ActiveWorkbook.Close
xl.ActiveWindow.Close
xl.Quit
Set xl = Nothing

Если записываю в Excel примерно 500-600 строк, процесс завершается. Если же строк больше, Excel остается висеть в процессах. Размер такого файла xls примерно 1 Mb. Проблема имеет место только, если запускать прогу под Win98/Me :!: . Под NT/2000/XP - все нормально.
В чем дело и как это преодолеть??? :?:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.02.2005 (Вс) 7:41

Ну, попробуй убрать xl.ActiveWindow.Close, к примеру...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

metall_2000
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 25.08.2003 (Пн) 17:37
Откуда: Москва

Сообщение metall_2000 » 13.02.2005 (Вс) 20:28

Ну, попробуй убрать xl.ActiveWindow.Close, к примеру...


Не помогло...
Знаю, что метод Close замедляет обработку, но чтобы вообще зависало :shock:
Последний раз редактировалось metall_2000 13.02.2005 (Вс) 21:17, всего редактировалось 1 раз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.02.2005 (Вс) 21:07

Макросы/вирусы в xla?
Lasciate ogni speranza, voi ch'entrate.

metall_2000
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 25.08.2003 (Пн) 17:37
Откуда: Москва

Сообщение metall_2000 » 13.02.2005 (Вс) 21:20

Нет - все чисто:) Ни макросов полезных, ни макросов вредных :lol:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.02.2005 (Вс) 21:40

FleX_2004, в коде именно так и написано.
Lasciate ogni speranza, voi ch'entrate.

Костя
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 14.02.2005 (Пн) 6:45
Откуда: Новосибирск

Сообщение Костя » 14.02.2005 (Пн) 7:57

Попробуй вместо
Set xl = CreateObject("Excel.Application")

set xl = new excel.application

В этом случае можно обойтись без строки xl.quit, сразу написать set xl = nothing
Всё бывает!

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Виснет процесс Excel

Сообщение codemaster » 14.02.2005 (Пн) 11:47

metall_2000 писал(а):. Если же строк больше, Excel остается висеть в процессах. Размер такого файла xls примерно 1 Mb. Проблема имеет место только, если запускать прогу под Win98/Me :!: . Под NT/2000/XP - все нормально.
В чем дело и как это преодолеть??? :?:


Была подобная проблем.

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

Сколько времени Excel остается висеть в процессах?
или ты это не замерял ?

+ cм. http://www.rsdn.ru/article/com/excelcache.xml

P.S. Кстати а Excel какой ( версия)?
//<-
Mit freundlichen Grüßen
//->

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 14.02.2005 (Пн) 12:11

+ в догонку

Application.DisplayAlerts = False

ты уверен что Еxcel не выдает тебе "диалог" :wink:
//<-
Mit freundlichen Grüßen
//->

Tanya
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 03.03.2004 (Ср) 21:41
Откуда: Беларусь, Минск

Сообщение Tanya » 14.02.2005 (Пн) 12:39

Может быть стоит сделать Excel видимым и посмотреть, что он там делает. Возможно он сваливается где-нибудь до закрытия книг и самого приложения.
Опять же, какой-нибудь запрос при закрытии выдает...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 158

    TopList