2010-05-17 9 views
1

我想編寫一個當我單擊X時調用的Outlook的宏。我希望Application_Quit()子例程停止程序退出,然後將其最小化。我可以找出最小化,但如何防止它退出?VBA - 停止退出程序,最小化代替

+2

我知道一些程序可以做到這一點,但它始終是一個用戶必須打開的選項。我不希望這是Outlook中的宏。 – 2010-05-17 21:57:26

回答

2

真的不可能阻止關閉。您可以根據Application_Quit的方法簽名告訴()事件:

Private Sub Application_Quit() 

    End Sub 

可取消的事件將是這樣的:

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

    End Sub 

我,四處搜尋,找到了一種很酷的哈克把戲,不過,如果你不介意的副作用,當它推出的Outlook會自動最小化(上this forum發現,複製和重新格式化):

關鍵是要在啓動時增加一個宏,自動最小化展望:

點擊Alt-F11進入VBA編輯器。 的 「ThisOutlookSession」 一節中粘貼此子:

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

現在的Outlook加載後會 減少。當有人 嘗試關閉Outlook時,我也使用此下一個 最小化而不是關閉。

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

創建C:\ Program Files文件\微軟 辦公室\ OFFICE11 \ relaunchOL.bat並把 在它下面兩行:

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

這會給展望幾個 秒關閉,然後重新啓動 本身,然後最小化自己sinse你 具有用於最小化在 啓動的宏。

+0

HI BradC只是我想向您確認什麼是ping命令中的1.2.3.4,這是您的機器的IP地址? PLZ確認 – 2011-06-22 07:56:42

+0

@deepesh:我認爲這是在批處理文件中,只是爲了完成ping的延遲。不,它不一定是一個真正的IP地址,事實上,如果它不是一個真正的IP地址,它會更好,因爲解析它比花費它是真實的需要更長的時間(大約20秒vs 5秒)。 – BradC 2011-06-22 13:24:48

+0

嗨,BradC非常感謝你的回覆,它對我有很大的幫助。 – 2011-06-23 15:41:23