Как правильно

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Starik
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 05.11.2002 (Вт) 16:55
Откуда: Russia

Как правильно

Сообщение Starik » 10.10.2004 (Вс) 20:48

Из проги (VB) открываю Xl в фоновом режиме, поработав с ним, закрываю кнопкой XL. После необходимо открыть другую книгу, но предыдущий XL зависает в памяти. Отсюда вопрос:
пробовал по разному
objBook.Close ' лист закрывается, а книга нет
objExcel.Quit всё закрывается, но XL остаётся в памяти
Set objExcel = Nothing
Application.Workbooks.Close
Set objBook = Nothing
End ' удаляется XL из памяти, но прога тоже закрывается
1. Необходимо закрыть XL и удалить его из памяти, т.к. далее мне нужно открыть другую книгу и т. д.
2. Как закрыть и удалить из памяти все открытые книги.
Но при этом прога должна работать

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

Сообщение GSerg » 10.10.2004 (Вс) 20:56

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

Starik
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 05.11.2002 (Вт) 16:55
Откуда: Russia

Сообщение Starik » 10.10.2004 (Вс) 21:22

Это, конечно, выход, но придеться много менять.
А что в VB никак не получиться одной кнопкой закрыть все XL и убрать их из памяти ( но сама программа должна работать)?

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

Сообщение GSerg » 10.10.2004 (Вс) 21:51

А зачем? XL должен быть один. Всё остальное - неправильная организация программы...

objExcel.quit
set objExcel=nothing
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Starik
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 05.11.2002 (Вт) 16:55
Откуда: Russia

Как правильно

Сообщение Starik » 11.10.2004 (Пн) 12:04

Может все организовано не так как нужно, но программа написана для других целей и только в последний момент пришлось базу данных сделать в XL (проще). А когда подключил, то сталкнулся с такой проблемой. А программу переписывать....
Данная программа обращается к XL для считывания или занесения данных, после чего XL нужно закрыть. После программа обрабатывает данные, рисует распределение, и т. д.. Если нужны другие данные, то необходимо открывать другой XL для считывания из него данных. Потом его закрыть, все обработать ну т.д.. Одновременно открыть второй XL, когда в памяти остаеться первый - программа просто зависает.

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 11.10.2004 (Пн) 12:24

'открыли новый
'...
'закрыли
objBook.Close False
Set objBook = Nothing
'открыли новый
'...
'закрыли
objBook.Close False
Set objBook = Nothing
Set objExcel = Nothing

Starik
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 05.11.2002 (Вт) 16:55
Откуда: Russia

Сообщение Starik » 11.10.2004 (Пн) 21:40

Большое спасибо за участие GSerg и marvan.
Все ваши предложения я учел, в программе пока ничего не менял, она на работе, но дома протестировал все варианты. Получилось вот что:
objBook.Close
Set objBook = Nothing
objExcel.Quit
Set objExcel = Nothing
marvan, как ты предложил, так я и сделал, при переходе к следующей опции, вставлял этот код.
Все работает. Завтра попробую на работе.


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

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

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

    TopList