powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
13 сообщений из 13, страница 1 из 1
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954356
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открытие , модуль книги:
Код: vbnet
1.
2.
3.
4.
Private Sub Workbook_Activate()
Application.Visible = False 'Visible=True предусмотрел! :)
frmCheck.Show
End Sub

но окно Excel всё-равно на секунду возникает на заднем плане. Как его совсем не показывать?

Закрытие , модуль формы:
Код: vbnet
1.
2.
3.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   With Application: .ActiveWorkbook.Close: .Quit:  End With
End Sub


модуль книги:
Код: vbnet
1.
2.
3.
4.
5.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Application: .EnableEvents = False: .DisplayAlerts = False
    If Not Me.Saved Then Me.Save
    .EnableEvents = True: .DisplayAlerts = True:  End With
End Sub


Но!!! Если в форме что-то менялось, то вопрос о своём сохранении файл всё-равно задаёт и самое неприятное, что остаётся висеть фоновый процесс EXEL.EXE...
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954443
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совсем непонятно: откуда висящий процесс берётся, разве вот этим:
Код: vbnet
1.
 Application.Quit

я его безусловно не убиваю?
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954444
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АндрейК
Совсем непонятно: откуда висящий процесс берётся, разве вот этим:
Код: vbnet
1.
 Application.Quit


я его безусловно не убиваю?
Из твоего первого сообщения не очень понятно, процесс остается висеть в фоне, когда ты изменяешь форму или в любом случае?

Попробуй повесить Quit на UserForm_Terminate, а не на UserForm_QueryClose
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954449
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С висящим процессом разобрался - пошёл по шагам после нажатия "крестика" на форме и увидел, что после строки
Код: vbnet
1.
.ActiveWorkbook.Close

происходит вызов процедуры
Код: vbnet
1.
 Private Sub Workbook_BeforeClose

в книге, а из неё, в свою очередь, возврат в процедуру формы на строку
Код: vbnet
1.
.Quit

не происходит ! Перенёс Quit в модуль книги - процесс пропал. Сейчас в книге так
Код: vbnet
1.
2.
3.
4.
5.
6.
:Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Application: .EnableEvents = False: .DisplayAlerts = False
    If Not Me.Saved Then Me.Save
    .Quit
    .EnableEvents = True: .DisplayAlerts = True:  End With
End Sub

Но проблема с вопросом о сохранении осталась: если в форме были изменения(а форма "сидит" на листе), то на строке
Код: vbnet
1.
.Quit

вылезает это сообщение, хотя двумя строками выше я св-во DisplayAlerts устанавливаю в False и сообщения должны блокироваться.
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954450
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй сделать Me.Save безусловным
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954664
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, пробовал, ничего не поменялось...
Тут вот какое дело: поставил точку останова на строку
Код: vbnet
1.
 .Quit

и вызвал окно отладки, где ввёл
Код: vbnet
1.
 ? Application.DisplayAlerts

... с одного раза догадаешься, что я получил в ответ? True!!! , мать его!
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954713
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ты поставь точку останова и введи ?Me.Name
есть у меня одно подозрение
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954729
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как и ожидалось: "form — копия.xlsm", т.е. имя открытого файла
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954772
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было бы идеально, если бы ты сделал тестовый пример, то есть файл без всего лишнего, только с тем, что воспроизводит проблему, я б тогда сам потыкался
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954806
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, выложил
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954814
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему, сохранение книги происходит асинхронно. А так как ты сразу закрываешь приложение, оно не успевает дойти до конца.

Возможный выход
запустить Save
установить Saved=True
запустить Quit по таймеру через некоторый промежуток времени или погуглить, как можно выяснить момент окончания сохранения книги

Альтернатива
Запускать Save каждый раз, когда изменяется форма (раз уж ты не предлагаешь пользователю возможность не сохранять изменения)
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954828
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, какой таймер?! Там книги-то как таковой нет, 22 кб весь файл - 1 поле и 1 чек на форме!
Это форма, зараза, мутит!!!!!!!!!!
Не открываю форму, но код в книге оставил. Вношу изменения на листе, закрываю файл, и вуаля! - сохраняется без сообщений!!!
Вывод: форму надо как-то "убить" до закрытия книги!
...
Рейтинг: 0 / 0
При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
    #39954829
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая разница, какой размер.
Ты запускаешь Save и тут же убиваешь приложение.
Save не заканчивается.

Я повесил на форму кнопку и на нее повесил Save - все работает.
Так что просто нужно оттянуть момент Quit
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / При открытии - убрать окно приложения, а после закрытия - убить висящий фоновый процесс.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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