Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как закрыть Excel??? / 25 сообщений из 31, страница 1 из 2
24.12.2003, 06:30
    #32361531
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Чайник уже вскипел!!!
Не закрывается Excel (в смысле - "висит" в памяти) после записи в лист из VB и последующего сохранения/закрытия. Причём, даже если ничего не открывю (книгу Excel), просто команда
Range(nomerS).Value = "......" (запись в ячейку) - и Excel - в памяти. Команды
xl.Quit
Set xl = Nothing
ничего не дают. А вот закрытие программы убирает из памяти и Excel....

Чего-то я здесь серьёзно не понимаю и потому прошу помощи
...
Рейтинг: 0 / 0
24.12.2003, 09:39
    #32361600
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Ну, хоть кто-нибудь! Отзовитесь!!!
Весь форум проглядел, все примеры опробовал - ВИСИТ, сволочь! (это я про Excel). Чем я его держу-то, если после откл.программы он (Excel) память освобождает???
Люди! Аууу!!!
...
Рейтинг: 0 / 0
24.12.2003, 10:06
    #32361635
tpg
tpg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
А DoEvents после

Set xl = Nothing

не поможет?
...
Рейтинг: 0 / 0
24.12.2003, 10:10
    #32361639
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Пробовал и DoEvents - увы.........
...
Рейтинг: 0 / 0
24.12.2003, 10:25
    #32361666
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Чайник - он и в Африке.... Так что помогайте, люди добрые. Есть здесь гуру и прочие мастера?

ДопИнфо:
Программа периодически пишется на 2-х машинах (дома и на работе), соотв., Win'98SE/Off'97 и Win2000/Off'2000. С абсолютно идентичными результатами.....
...
Рейтинг: 0 / 0
24.12.2003, 10:46
    #32361704
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
я, конечно, не знаю смогу помочь или нет, но сутра, посмотрев вопрос сначала хотел чем-то помочь, а потом думаю стоит ли гадать да угадывать, время тратить?
если б вы кусок кода положили бы уж давно кто-нить ответил бы, а то помогите, а с чем помочь-то????
сорри, конечно
...
Рейтинг: 0 / 0
24.12.2003, 11:02
    #32361736
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Нужно уничтожить ссылки на все ёксельные объекты, а не только Application...
...
Рейтинг: 0 / 0
25.12.2003, 03:50
    #32362628
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Жду совета как Винни-Пух мёда

Вот кусочек кода, который предполагалось оставить как окончательный вариант. Всё работает, данные записываются куда нужно, только после завершения работы (не важно, с открытием Excel, или без, но с сохранением) - Excel "висит" в памяти, и при повторном обращении к этому кусочку программы всё выполняется без ошибок, но в таблице - пусто!

Dim xl As New excel.Application 'ссылка на библиотеку типов Excel
Dim xlb As New excel.Workbook
Dim xls As New excel.Worksheet

Set xlb = xl.Workbooks.Open(nameF)
Set xls = xlb.Worksheets.Item("Таблица")

'Заполнение ТАБЛИЦЫ
For i = 1 To kolGrupp
nomerS = "A" & Mid$(Str(kolStrok), 2, Len(Str(kolStrok)) - 1)
Range(nomerS).Value = "Группа " & Str(i)
For j = 1 To kolEP(i, 0)
kolStrok = kolStrok + 1
nomerSs = Mid$(Str(kolStrok), 2, Len(Str(kolStrok)) - 1)
nomerS = "A" & nomerSs
Range(nomerS).Value = namEP(i, j)
'и т.д. заполняется таблица по колонкам
Next
'и т.д. заполняется таблица по строкам с аналогичным кодом
Next

'Здесь - разрешение открыть Excel
'xl.Visible = True ' делаем Excel видимым
'Если Excel не открывается - запись
xlb.Save
'или
'xl.ActiveWorkbook.Save
'что вроде как одно и то же, по крайней мере записывается одинаково
'Завершение
xl.Quit
Set xl = Nothing
DoEvents

Вот, собственно, и всё.... Но даже если оставить вот так:
' ЗАРЕМИРОВАНЫ(!) все(!!!) ссылки и открывания книги и листов Excel
' только ОДНА командочка
Range(nomerS).Value = "информашка"
и далее - всё закрываем (мне так кажется)
xl.Quit
Set xl = Nothing
DoEvents
- Excel всё равно появляется в мозгах и висит там до закрытия VB-программы

"Нужно уничтожить ссылки..." ????!!!! - ведь написано жеж ж - Чайник.
Где? Что? Когда? ГосподА! Направьте на путь истинный
...
Рейтинг: 0 / 0
25.12.2003, 07:30
    #32362668
tpg
tpg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
А что есть такое по сути Range ?
...
Рейтинг: 0 / 0
25.12.2003, 09:55
    #32362753
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Как я наивно полагаю, Range - энто такая штука, кот. расставляет инфу в ячейки. Откуда эта Range родом - без понятия, в VB такой команды нет, может, VBA??? И вроде из-за неё и заморочки. Кусок кода взял из какого-то примера, сам не парю. Может, как-то по другому можно записывать инфу в ячейки?
...
Рейтинг: 0 / 0
25.12.2003, 10:15
    #32362774
Svetlana
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Я так делала всегда:
xlb.Close True 'т.е. сохранить изменения
xl.Quit

И все равно при разработке проги возникают проблемы.
Вот почему:
Компилится код. Тут БАХ - ошибка; останавливаешь проект. А Excel то не закрылся! Код до конца не выполнился! Потому и проблемы потом возникали - значения новые не записывались.. Вот и приходится каждый раз открывать таск и завершать Excel.exe..
...
Рейтинг: 0 / 0
25.12.2003, 10:53
    #32362834
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Ну, и где ж "сермяжня правда"? Как-то же его можно "погасить"?? Ну ведь кто-то же ж умеет, а???
Слышал даже мимоходом, что нужно Application.TemplatesPath применить каким-то боком... Вот тока знать бы
...
Рейтинг: 0 / 0
25.12.2003, 13:18
    #32363134
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
да, блин, стопудово у вас где-то еще объекты не убиваются (вам же сказали), что не удивительно, если вы сами с кодом разобраться не можете
ищите в коде места, где присутствует что-то типа
Dim xl As New excel.Application
Dim xlb As New excel.Workbook
Dim xls As New excel.Worksheet
либо
Set blablabla=CreateObject()
перед выходом все такие объекты должны убиваться
...
Рейтинг: 0 / 0
26.12.2003, 04:48
    #32363917
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
В том-то и прикольчик, что НЕТ никаких "CreateObject". А все
Dim xl As New excel.Application
Dim xlb As New excel.Workbook
Dim xls As New excel.Worksheet
ЗАРЕМИРОВАНЫ - в примере кода - второй вариант. Соотв, нет и команд закрытия xl, xlb (заремированы).
И есть только одна строка с командой Range. И всё - появляется в мозгах Excel и висит до закрытия программы. Как убить эту штуку я как раз и не знаю.
Хотя это же очень просто. Но для тех, кто знает. Поделились бы кусочком информации, а?
...
Рейтинг: 0 / 0
26.12.2003, 04:53
    #32363918
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
(Продолж)
А вот если этой Range нет - то и Excel не появляется.....
...
Рейтинг: 0 / 0
27.12.2003, 02:51
    #32365054
Alexander_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Я придерживаюсь мнения Уважаемого пользователя PA (высказавшегося о закрытии "всех ёксельных ссылок"), хотя сам толком в VB не кодил. Просто интуитивно как прогораммеру мне это кажется...

Я кодил только в VBA под разные офисные апплы. Но у меня есть предложение.

Dim xl As New excel.Application 'ссылка на библиотеку типов Excel
Dim xlb As New excel.Workbook
Dim xls As New excel.Worksheet

..................

Set xlb = Nothing
Set xls = Nothing
Set xl = Nothing
...
Рейтинг: 0 / 0
27.12.2003, 03:04
    #32365055
Alexander_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Уважаемый Ander!

А Dim Xl As New ... тыры-пыры

и Create (тыры-пыры)

без разницы занимает память.


Я далеко не гуру, но я это предполагаю т.к. на Delphi New значит создать новый указатель

var P: ^MyType;
...
P:=New(P); // Создаем новый объект-указатель на тип MyType в памяти


А Create - создать объект, т.е. зарезервировать его в памяти. И любому Create'у должен соответствовать Free.

Но вообще-то у нас тема про VB, это я так аналогии провожу...
...
Рейтинг: 0 / 0
27.12.2003, 03:08
    #32365056
Alexander_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Пардон, извиняюсь.

New(P); // просто без присваивания. меня что-то заклинило. пойду спать
...
Рейтинг: 0 / 0
27.12.2003, 03:26
    #32365059
Alexander_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
А что если просто

Dim X As New Excel

Дальше обращаться Excel.Application
Excel.WorkBook
Excel.WorkSheet


Set Excel = Nothing
...
Рейтинг: 0 / 0
27.12.2003, 03:27
    #32365060
Alexander_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
'Извиняюсь, предыд. не читайте!

А что если просто

Dim X As New Excel

Дальше обращаться Excel.Application
Excel.WorkBook
Excel.WorkSheet


Set X = Nothing
...
Рейтинг: 0 / 0
27.12.2003, 03:28
    #32365061
Alexander_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Что-то я совсем уже того

'Извиняюсь, предыд. не читайте!

А что если просто

Dim X As New Excel

Дальше обращаться Excel.Application
X.WorkBook
X.WorkSheet


Set X = Nothing
...
Рейтинг: 0 / 0
27.12.2003, 03:30
    #32365062
Alexander_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Dim X As New Excel



...........X.Application
.......... X.WorkBook
...........X.WorkSheet


Set X = Nothing
...
Рейтинг: 0 / 0
27.12.2003, 11:27
    #32365118
Alexander_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
____________________
Subj: From Svetlana
Я так делала всегда:
xlb.Close True 'т.е. сохранить изменения
xl.Quit

И все равно при разработке проги возникают проблемы.
Вот почему:
Компилится код. Тут БАХ - ошибка; останавливаешь проект. А Excel то не закрылся! Код до конца не выполнился! Потому и проблемы потом возникали - значения новые не записывались.. Вот и приходится каждый раз открывать таск и завершать Excel.exe..
_______________
<b>А если периодически схохранять изменения в целях отладки (в подозрительных местах поставить xlb.Save)?

Можно думаю твой код и написать так

xlb.Save
xlb.Close
xl.Quit
<\b>
...
Рейтинг: 0 / 0
30.12.2003, 10:07
    #32366618
Ander
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Всем СПАСИБО!
Хотя вопрос остался....
Всё, как указано выше, было опробовано в разных вариантах.
Вот один из них:

Dim xl As New Excel.Application
Dim xlb As New Excel.Workbook
Dim xls As New Excel.Worksheet
' ========================

Private Sub ....
Set xlb = xl.Workbooks.Open(nameF)
Set xls = xlb.Worksheets.Item("Таблица")

'Заполнение ТАБЛИЦЫ
For i = 1 To kol1
For j = 1 To kol2
Range(nomerS).Value = <инфо>
'и т.д. заполняется таблица по колонкам
Next
'и т.д. заполняется таблица по строкам с аналогичным кодом
Next

xlb.Save
xlb.Close
xl.Quit
Set xlb = Nothing
Set xls = Nothing
Set xl = Nothing
End Sub

Если принудительно обойти или запретить или заремировать цикл, т.е. не выполняется команда Range (и не заполняется таблица), то Excel благополучно выключается. Если эта команда появляется - Excel повисает в памяти до выключения программы VB. Может, каким-то другим образом можно рассовывать инфу по ячейкам? Научите, мастера! Или может всё же кто подскажет, "чего ещё нажать"? Про 3 кнопочки я уже знаю...

>Alexander_Z - чего означает
А Dim Xl As New... тыры-пыры
и Create (тыры-пыры)
- я не понял. И что это за Create ?
...
Рейтинг: 0 / 0
30.12.2003, 10:52
    #32366662
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть Excel???
Create -> CreateObject (через позднее связывание).
Например:
Код: plaintext
Set EXL = CreateObject( "Excel.Application" ) ' запускаем Excel
Но эта строчка создаст новый экземпляр, даже если один уже запущен.
Впочем, и на это есть свои обходы (вызов GetObject и проверка ошибки)
Но это не обязательно.
А в приведенном примере мне непонятно, зачем нужна переменная для листа? Да и для книги, кстати, не обязательно:

Код: plaintext
1.
xl.Workbooks.Open nameF
xl.ActiveWorkbook.Sheets( "Таблица" ).Activate
и дальше заполнение идет своим чередом.

Еще не советуют использовать As New в одной строчке (вдруг поможет)
Код: plaintext
1.
Dim xl As Excel.Application
Set xl = New Excel.Application
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как закрыть Excel??? / 25 сообщений из 31, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]