Отладка Outlook 2007 script, запущенная по правилу

Я пытаюсь отлаживать Outlook VBA script для Outlook 2007, который запускается с помощью правила. Я установил точку останова в script, но не попал.

script на самом деле является Sub в объекте ThisOutlookSession.

Когда я запускаю правило в указанной папке, ничего не происходит.

Что я делаю неправильно?

Update:

Я добавил MsgBox "Processing: " & mailItem.Subject в script и это всплывает нормально, когда я запускаю правило. Однако я не могу заставить script останавливаться на контрольных точках.

Ответ 1

Я думаю, что вы, возможно, не делаете ничего плохого, потому что я испытал точно такое же поведение.

Однако, чтобы отладить ваш VBA, я предлагаю вам создать макрос (через меню Tools | Macro | Macros), который вызывает вашу функцию script с помощью тестового элемента электронной почты, который вы создаете в макросе.

Возможно, что-то вроде этого:

Sub TestScript()
    Dim testMail As MailItem
    Set testMail = Application.CreateItem(olMailItem)
    testMail.Subject = "Test subject"
    testMail.Body = "Test body"
    Project1.ThisOutlookSession.YourScriptForDebugging testMail
End Sub

Таким образом вы снова можете "перейти в" макрос через этот диалог макросов и выполнить всю необходимую отладку. Во всяком случае, это решило мою проблему.

Ответ 2

Любой существующий элемент можно использовать для тестирования кода, для которого он требуется.

Sub passOpenItem()
    'first open an item
    codeRequiringItemParameter ActiveInspector.CurrentItem
End Sub

Sub passSeletion()
    'first select an item
    codeRequiringItemParameter ActiveExplorer.Selection(1)
End Sub

Sub codeRequiringItemParameter(itm As Object)
    Debug.Print "TypeName: " & TypeName(itm)
    Debug.Print "Class...: " & itm.Class
End Sub