Открывайте и читайте.eml файлы с помощью VBA

Мне нужно, чтобы открыть и прочитать файлы.eml, используя VBA. Шокирующе это кажется трудным. Пожалуйста помоги. Код ниже дает эту ошибку в строке Set OL = GetObject("Outlook.Application"):

Ошибка времени выполнения '-2147221020 (800401e4)': ошибка автоматизации Неверный синтаксис

Код:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Const SW_SHOWNORMAL As Long = 1
Private Const SW_SHOWMAXIMIZED As Long = 3
Private Const SW_SHOWMINIMIZED As Long = 2

Sub test11()
    strMyFile = "C:\test.eml"
    Dim Myinspect As Outlook.Inspector
    Dim MyItem As Outlook.MailItem
    Dim OL As Object

    If Dir(strMyFile) = "" Then
        MsgBox "File " & strMyFile & " does not exist"
    Else
        ShellExecute 0, "Open", strMyFile, "", "C:\test1.eml", SW_SHOWNORMAL
    End If

    Set OL = GetObject("Outlook.Application")
    Set Myinspect = OL.ActiveInspector
    Set MyItem = Myinspect.CurrentItem
    MsgBox "Subject = " & MyItem.Subject
    MsgBox "Body = " & MyItem.Body
    MyItem.Close 1
End Sub

1 ответ

Решение

GetObject Функция принимает имя класса в качестве второго аргумента:

Set OL = GetObject(, "Outlook.Application")

Это CreateObject который бы взял это первым:

Set OL = CreateObject("Outlook.Application")

Обратите внимание, что Outlook будет работать только один экземпляр, когда-либо. Вы должны быть в состоянии позвонить CreateObject функция и не нужно будет использовать GetObject, Если Outlook уже открыт, CreateObject вернет этот экземпляр, если внешний вид еще не открыт, он создаст его.

Другие вопросы по тегам