调试由规则触发的 Outlook 2007 脚本

发布于 2024-10-17 18:06:19 字数 309 浏览 6 评论 0原文

我正在尝试调试由规则触发的 Outlook 2007 VBA 脚本。我在脚本中设置了断点,但没有被击中。

该脚本实际上是 ThisOutlookSession 对象中的一个 Sub

当我在指定文件夹上运行规则时,似乎没有发生任何事情。

我做错了什么?

更新:

我添加了一个MsgBox“处理:”& mailItem.Subject 到脚本,当我运行规则时,它会弹出。但是我似乎无法让脚本在断点处停止。

I'm trying to debug an Outlook 2007 VBA script that's fired by a rule. I've set a breakpoint in the script but it doesn't get hit.

The script is actually a Sub in the ThisOutlookSession object.

When I run the rule on a specified folder nothing seems to happen.

What am I doing wrong?

Update:

I've added a MsgBox "Processing: " & mailItem.Subject to the script and that pops up just fine when I run the rule. However I can't seem to get the script to stop on breakpoints.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三岁铭 2024-10-24 18:06:19

我认为你可能没有做错什么,因为我也经历过完全相同的行为。

但是,为了调试您的 VBA,我建议您创建一个宏(通过“工具|宏|宏”菜单),该宏使用您在宏中创建的测试电子邮件项来调用脚本函数。

也许是这样的:

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

这样您就可以再次通过该宏对话框“单步执行”宏,并进行您需要的所有调试。无论如何,它解决了我的问题。

I think you may not be doing anything wrong, because I have experienced exactly the same behaviour.

However, in order to debug your VBA, I suggest that you create a macro (via the Tools|Macro|Macros menu) that calls your script function with a test e-mail item that you create in the macro.

Maybe something like this:

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

This way you can "Step Into" the macro via that Macro dialog again, and do all the debugging you need. It solved my problem, anyway.

最终幸福 2024-10-24 18:06:19

任何现有项目都可用于测试需要该项目的代码。

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

Any existing item can be used to test code that requires one.

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文