使用VB.Net在Outlook资源管理器中获取选定的邮件项目

时间:2016-10-15 09:31:15

标签: vb.net visual-studio outlook outlook-addin

我正在尝试将一些VBA代码转换为Outlook插件,以避免在安全性较低的环境中运行宏。

我知道VBA和VB6足够用于编写我自己使用的东西,这是我第一次涉足VB.Net。

我刚刚安装了Visual Studio(社区版),并且从VBA转换到比我想象的更顺畅,这要归功于除了一两个问题之外IDE的建议。

其中一个是尝试根据此处提供的代码获取Outlook中选择的项目:https://msdn.microsoft.com/en-us/library/office/ff868001.aspx

Sub GetSelectedItems() 
    Dim myOlExp As Outlook.Explorer 
    Dim myOlSel As Outlook.Selection 
    Dim oMail As Outlook.MailItem 
    Dim x As Integer 

    myOlExp = Application.ActiveExplorer ' => This generates an error
    myOlSel = myOlExp.Selection 
    For x = 1 To myOlSel.Count 
        If myOlSel.Item(x).Class = OlObjectClass.olMail Then 
            Set oMail = myOlSel.Item(x) 
            ' Do Stuff 
        End If 
    Next x 
End Sub 

我无法解决Application.ActiveExplorer生成的错误消息。

有关如何将其转换为VB.Net的任何建议?我搜索过高低,但我发现的所有例子都是基于VBA的。

SO Question已接近但我无法在语言之间实现跨越。

1 个答案:

答案 0 :(得分:0)

经过艰苦的学习,我设法使用相当于:

来解决这个问题
Imports Microsoft.Office.Interop.Outlook

Sub GetSelectedItems() 
    Dim myOlApp As Outlook.Application = New Outlook.Application  
    Dim myOlExp As Outlook.Explorer = myOlApp.ActiveExplorer
    Dim myOlSel As Outlook.Selection = myOlExp.Selection
    Dim oMail As Outlook.MailItem 
    Dim x As Integer 

    For x = 1 To myOlSel.Count 
        If (TypeOf myOlSel.Item(x).Class is MailItem) Then 
            oMail = myOlSel.Item(x) 
            ' Do Stuff 
        End If 
    Next x 
End Sub