VBA - остановить программу от выхода, свернуть вместо - PullRequest
1 голос
/ 18 мая 2010

Я хочу написать макрос для Outlook, который вызывается при нажатии кнопки X. Я хочу, чтобы подпрограмма Application_Quit () не давала программе выйти из программы, а затем свернула ее.Я могу понять минимизацию, но как я могу предотвратить ее выход?

1 Ответ

2 голосов
/ 18 мая 2010

По-настоящему невозможно предотвратить закрытие. На основе сигнатуры метода события Application_Quit () вы можете сказать:

   Private Sub Application_Quit()

   End Sub

Отменяемое событие будет выглядеть так:

   Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

   End Sub

Я искал вокруг и нашел своего рода крутой хакерский трюк, хотя, если вы не возражаете, побочный эффект, который Outlook автоматически минимизирует при запуске (найден на этом форуме , скопирован и переформатирован ):

Хитрость заключается в добавлении макроса, который автоматически минимизирует Outlook при запуске:

Нажмите Alt-F11, чтобы перейти к редактору VBA. Вставьте этот саб в Раздел ThisOutlookSession:

Private Sub Application_Startup()
    SendKeys ("% n") 
End Sub

Теперь после загрузки Outlook он будет минимизировать. Я также использую это рядом с минимизировать вместо того, чтобы закрыть, когда кто-то пытается закрыть прогноз.

Private Sub Application_Quit() 
     Call Shell("C:\Program Files\Microsoft Office\OFFICE11\relaunchOL.bat" _
       , vbHide)
End Sub

Создать C: \ Program Files \ Microsoft Офис \ OFFICE11 \ relaunchOL.bat и поставить эти две строки в нем:

Ping 1.2.3.4 -n 1 
"C:\Program Files\Microsoft Office\OFFICE11\outlook.exe"

Это даст Outlook пару секунд, чтобы закрыть, затем перезапустить сам, то свести себя к минимуму грешу есть макрос для минимизации в запуск.

...