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

时间:2015-01-02 11:55:18

标签: vba outlook outlook-vba

我正在尝试自动化一个过程,在这个过程中我收到一封带有附件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

2 个答案:

答案 0 :(得分:3)

您可以使用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

答案 1 :(得分:-1)

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