【发布时间】:2024-05-23 10:45:01
【问题描述】:
有一个名为MailItemClass 的VBA 类有一个event 用于在Outlook 中发送电子邮件时。我在 VB.NET 中找不到这个。我查看了documentation,但在MAPI 中找不到它。
(我可以从 VB.NET 调用 VBA 吗?)
【问题讨论】:
标签: .net events vba outlook-2007 mapi
有一个名为MailItemClass 的VBA 类有一个event 用于在Outlook 中发送电子邮件时。我在 VB.NET 中找不到这个。我查看了documentation,但在MAPI 中找不到它。
(我可以从 VB.NET 调用 VBA 吗?)
【问题讨论】:
标签: .net events vba outlook-2007 mapi
您是否正在制作 Outlook 加载项?在发送项目之前会引发一个名为 Application.ItemSend 的事件。我刚刚启动了 VS2010,创建了一个 Outlook 2007 插件类型的新项目,其中仅包含以下代码,当我单击从 Outlook 发送时,我的 Application_ItemSend 按预期触发。
Public Class ThisAddIn
Private Sub ThisAddIn_Startup() Handles Me.Startup
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
Private Sub Application_ItemSend(ByVal Item As Object, ByRef Cancel As Boolean) Handles Application.ItemSend
System.Windows.Forms.MessageBox.Show("Hi")
End Sub
End Class
编辑
如果您正在制作使用相同方法的 WinForms 应用程序,但您“看到”的方式略有不同。可能有点令人困惑的是,该事件是在应用程序级别引发的,而不是从邮件项本身引发的。
Public Class Form1
''//Holds a reference to our mail application
Private WithEvents OA As Microsoft.Office.Interop.Outlook.Application
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
''//Either launches Outlook or snaps to the current running one
OA = New Microsoft.Office.Interop.Outlook.Application()
End Sub
Private Sub OA_ItemSend(ByVal Item As Object, ByRef Cancel As Boolean) Handles OA.ItemSend
MessageBox.Show("Hello")
End Sub
End Class
【讨论】: