如何在 Outlook 中使用 VBA 打开和阅读 txt 文件附件?

How can I Open and read a txt file attachment using VBA in Outlook?

我正在尝试使我收到一封带有附件 txt 的电子邮件的过程自动化

我打开并检查第二行的日期,并将该日期保存到特定位置的文件夹中。

使用此代码和 Outlook 中的消息规则,我将文件保存在您希望的文件夹中:

现在的问题是:
如何在保存前读取txt的第二行?

Public Sub SalvarAnexo(Item As MailItem)

    Dim Atmt As Attachment
    Dim FileName As String

    MsgBox "Mensagem Recebida de " & Item.Sender & "!"

    For Each Atmt In Item.Attachments
        If Right(Atmt.FileName, 3) = "txt" Then
            FileName = "C:\temp\" & Format(Item.CreationTime, "yyyymmdd_hhnnss_") & Atmt.FileName
            Atmt.SaveAsFile FileName
        End If
    Next Atmt

End Sub

Outlook 对象模型不提供任何用于即时读取附件的功能。您需要将附件作为文件保存在磁盘上,然后打开它阅读第二行。您也可以考虑使用低级代码(或任何第三方包装器)- Extended MAPI。它允许以字节流的形式打开附件。

您可以使用 FileScriptingObject 来抓取文本文件的第二行。

Public Sub SalvarAnexo(Item)

    Dim Atmt As Attachment
    Dim FileName As String
    Dim objFSO As Object
    Dim objFile As Object
    Dim strTest As String

    MsgBox "Mensagem Recebida de " & Item.Sender & "!"

    For Each Atmt In Item.Attachments
        If Right$(Atmt.FileName, 3) = "txt" Then
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            FileName = "C:\temp\" & Format(Item.CreationTime, "yyyymmdd_hhnnss_") & Atmt.FileName
            Atmt.SaveAsFile FileName
            Set objFile = objFSO.OpenTextFile(FileName, 1)
             strTest = objFile.ReadLine
            strTest = objFile.ReadLine
            objFile.Close
            MsgBox "Your date is " & strTest
        End If
    Next Atmt

End Sub