在Outlook中,是否可以在我手动选择的电子邮件上运行宏?

时间:2014-08-14 18:38:01

标签: outlook outlook-vba

是否可以在我在收件箱中手动选择的电子邮件上运行宏。例如,右键单击电子邮件并选择"发送至>>宏>> (显示接受Outlook.MailItem作为参数的子例程列表)?

2 个答案:

答案 0 :(得分:3)

我认为您必须在邮件功能区中添加一个Button。这个按钮可以调用一个例程。

在此例程中,您使用活动选择:

Sub example()
Dim myOlApp As Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Dim olExplorer As Explorer
Dim olfolder As MAPIFolder
Dim olSelection As Selection
Dim olitem As mailitem

Set olExplorer = Application.ActiveExplorer
Set olfolder = Application.ActiveExplorer.CurrentFolder

If olfolder.DefaultItemType = olMailItem Then
Set olSelection = olExplorer.Selection
end if 

For Each olitem In olSelection
'do something
Next olitem

结束子

我希望你能做到这一点...... 最大

答案 1 :(得分:2)

所以,我能够简化马克斯的答案,但他确实指出了我正确的方向。以下基本上是我的目标。在收件箱中选择电子邮件后,我应该可以运行此宏并继续处理它。

Sub example()
    Dim x, mailItem As Outlook.mailItem
    For Each x In Application.ActiveExplorer.Selection
        If TypeName(x) = "MailItem" Then
            Set mailItem = x
            call fooMail(mailItem)
        End If
    Next
End Sub

Sub fooMail(ByRef mItem as Outlook.MailItem)
    Debug.print mItem.Subject
End Sub