2015-05-22 2 views
0

Вопрос прост, но для меня почему-то трудно достичь. Как я могу запустить событие quit/close, когда Outlook 2007 закрывается?Как назвать событие quit/close в Outlook 2007 VBA

Я хочу, чтобы в VBA отображался да/нет msgbox, который выполняет код в зависимости от выбранной опции при закрытии перспективы.

Я думал, что решение с использованием:

Dim WithEvents myOlApp As Outlook.Application 

Sub Initialize_handler() 
    Set myOlApp = CreateObject("Outlook.application") 
End Sub 

Private Sub myOlApp_Quit() 
    MsgBox "TEST" 
End Sub 

Сначала я пытался вставить его в свой модуль, но это дало мне ошибку Only valid in object modules. Итак, я создал новый модуль класса и вставил сюда код (который не дал никаких ошибок), но все равно событие не будет срабатывать. Что происходит не так и как это исправить?

+1

Не уверен, что он такой же в 2007 году, как и 2010 год. Но в проекте есть объект Microsoft Outlook, а в нем есть «private sub Application_Quit». Таким образом, вы можете вызывать функцию из этого – Sam

+0

Пробовал, чтобы вставить суб в модуле класса в качестве обычного модуля, но, к сожалению, не был уволен. – Nicolas

+1

@Sam: Просто видел ваш комментарий. Я удалил свой ответ. Это тоже работает для меня. Это правильный ответ, который был приведен в 2007 году так же, как и 2010 год, который, как я считаю, будет (если я не ошибаюсь). Возможно, вы захотите ответить на этот вопрос? –

ответ

1

Set myOlApp = CreateObject ("Outlook.Application")

Там нет необходимости создавать новый экземпляр Outlook. Вы должны использовать свойство Application availble в Outlook VBA.

Private Sub Application_Quit() 
    MsgBox "Goodbye, " & Application.GetNamespace("MAPI").CurrentUser 
End Sub 

Посмотрите на Getting Started with VBA in Outlook 2010 статью в MSDN.

+0

Вы видели комментарии под вопросом? :) –

+0

Кто-нибудь сказал о 'CreateObject (« Outlook.application »)'? –

+0

После комментария Сэма эта линия становится излишней;) –

Смежные вопросы