2016-10-15 3 views
0

Я пытаюсь преобразовать код VBA, который я собрал в дополнение к Outlook, чтобы избежать необходимости запускать макросы в среде с ограниченной безопасностью.Получить выбранные элементы почты в Outlook Explorer с VB.Net

Я знаю достаточно VBA и VB6, чтобы писать в материалах, которые я использую для себя, и это мой первый набег на VB.Net.

Я только что установил Visual Studio (Community Edition), а преобразование из 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 подходит к концу, но я не могу совершить прыжок между языками.

ответ

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