0

我需要使用 VBA 打开和读取 .eml 文件。令人震惊的是,这似乎很困难。请帮忙。下面的代码在行给出了这个错误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
4

1 回答 1

1

GetObject函数将类名作为第二个参数:

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

它将CreateObject首先采取它:

Set OL = CreateObject("Outlook.Application")

请注意,Outlook 永远只会运行一个实例。您应该能够调用该CreateObject函数并且不需要使用GetObject. 如果 Outlook 已经打开,CreateObject将返回该实例,如果 Outlook 尚未打开,它将创建一个。

于 2015-02-18T16:07:27.993 回答