powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / На что может ссылаться объектная переменная после закрытия приложения?
7 сообщений из 7, страница 1 из 1
На что может ссылаться объектная переменная после закрытия приложения?
    #32736967
S@mson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос такой:

Есть глобальная переменная:
Код: plaintext
Private xlApp As Object
В теле процедуры №1 я ее инициализирую (открываю приложение Excel)
Код: plaintext
1.
2.
Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open "MyFile.xls",  0 
xlApp.Visible = True

Далее в процедуре №2 я использую переменную xlApp.
Перед ипользованием переменной xlApp, мне нужно проверить мог ли пользователь уже закрыть приложение Excel. Делаю это с помощью
Код: plaintext
xlApp Is Nothing 

Тестирую:
Закрываю Excel. Делаю проверку:
Код: plaintext
xlApp Is Nothing 
возвращает True.
Проверяю, действительно в памяти еще висит Excel (видимо потому, что в приложении есть незакрытая переменная xlApp)
Обращение к свойствам переменной xlApp приводит естественно к ошибке.

Вопрос: Как при закрытии пользователем приложения Excel выгрузить его из памяти полностью или правильно определить закрыто ли приложение Excel?
P.S. Кроме переменной xlApp на Excel больше никакие переменные не ссылаются.
...
Рейтинг: 0 / 0
На что может ссылаться объектная переменная после закрытия приложения?
    #32737027
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim XlsApp As Excel.Application
Dim OutXlsBook As Excel.Workbook
...
'открываем, работаем
...
'закрываем
OutXlsBook.Close False
Set OutXlsBook = Nothing
Set XlsApp = Nothing
...
Рейтинг: 0 / 0
На что может ссылаться объектная переменная после закрытия приложения?
    #32737401
S@mson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно я неточно сформулировал вопрос. Попробую уточнить ситуацию:
Есть приложение (проект на Access) из него я открываю файл Excel. Проект Access теперь содержит ссылку xlApp на этот файл Excel.
Если пользователь теперь вручную (не программно) закроет файл Excel, то ссылка xlApp в проекте Access у меня все-равно на чтото ссылается
Код: plaintext
xlApp Is Nothing  ' возвращает True
и сам Excel продолжает висеть в памяти (процесс Excel.exe)
Как такое может быть?
Получается что если приложение откпыло файл, то только оно и может его закрыть? Бред какой-то. Крыша уже едит. Помогите!
...
Рейтинг: 0 / 0
На что может ссылаться объектная переменная после закрытия приложения?
    #32737571
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть предположение, что в случае, когда пользователь закроет файл Excel, созданный через Application в другом процессе - то закрывается только Workbook, что вполне естественно.
...
Рейтинг: 0 / 0
На что может ссылаться объектная переменная после закрытия приложения?
    #32737634
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я чего-то не понимаю?
авторSet xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open "MyFile.xls", 0
xlApp.Visible = True
Если ексель видимый, значит пользователь будет в неи чтото делать, и скорее всего его закроет вручную,
ну и что мешает после
Код: plaintext
1.
xlApp.Visible = True
Set xlApp = Nothing
?
...
Рейтинг: 0 / 0
На что может ссылаться объектная переменная после закрытия приложения?
    #32737939
S@mson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То Ирча:
Освобождать xlApp в теле первой процедуры мне нельзя, т.к. я хочу использовать ее во второй, если конечно пользователь не закроет Excel (для этого я ее и делаю внешней переменной).
То marvan:
Попробывал объявить аналогично переменную xlBk
Код: plaintext
Private xlBk As Excel.Workbook
В теле процедуры №1
Код: plaintext
Set xlBk= xlApp.Workbooks( 1 )
Втеле процедуры №2, после закрытия Excel
Код: plaintext
xlBk Is Nothing
все равно = True
Значит ошибка связана с этими внешними переменными, именно они не дают Excel-ю нормально выгрузиться.

Пришлось мне забить на эти внешние переменные, в первой процедуре нормально закрывать объект xlApp, а во второй получать опять ссылку на него через GetObject. Вроде заработало.
Однако поведение этих переменных более чем странно.
Спасибо за ответы.
...
Рейтинг: 0 / 0
На что может ссылаться объектная переменная после закрытия приложения?
    #32738223
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А не проще ли во второй процедуре объявить ее еще раз?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / На что может ссылаться объектная переменная после закрытия приложения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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