2017-09-14 292 views
-1

我目前正在努力解决以下问题:如何从excel中的.msg文件中提取数据?

我试图改进一些工作过程,其中涉及组织大量的项目电子邮件(.msg),存储在一个文件夹中。文件需要从'Message.msg'重命名为'DateSent-from Sender-Message.msg'。

现在重命名很容易处理excel宏,但我真的很努力从.msg获取所需的数据。

有什么办法让excel从.msg文件中读取一些信息?我到目前为止所尝试的一切都失败了我对发件人和发送日期感兴趣。

非常感谢您的任何建议!

+0

打开它作为一个文本流,发送方和发送日期应该是从原始文本的可读性。 – CLR

+0

@clr,我刚刚使用文本编辑器打开了保存的outlook msg文件。该文件是二进制文件。我没有找到任何明文。 – jsotola

+0

@jsotola - 有多奇怪。这种存储方式一定有不同的方式,而我看到的大部分邮件都是乱码,发件人和日期等都清晰可见。无论如何,我看到你的答案可以解决这个问题,荣誉! – CLR

回答

1

这里是一些出发码

Option Explicit 

Sub getMsgData() 

    ' add reference to microsoft outlook object library 

    Dim olApp As Outlook.Application 
    Set olApp = CreateObject("Outlook.Application") 

    Dim mailDoc As Outlook.MailItem 
    Dim i As Long 
    i = 1 

    Dim nam As Variant 
    For Each nam In Array("test.msg", "test2.msg") 
     Set mailDoc = olApp.Session.OpenSharedItem(ActiveWorkbook.Path & "\" & nam) 
     Sheets("sheet1").Range("a1").Offset(i) = mailDoc.SentOn 
     Sheets("sheet1").Range("a1").Offset(i, 1) = mailDoc.Sender 
     mailDoc.Close False 
     i = i + 1 
    Next nam 

    olApp.Quit 

    Set mailDoc = Nothing 
    Set olApp = Nothing 

End Sub