2017-01-16 221 views
2

我想從保存的Outlook消息中提取附件,以便我可以從附加的Excel電子表格中挖掘數據。這些消息已經以.msg文件的形式保存到共享文件夾中,並且我正努力讓VBA甚至將這些消息識別爲文件。我最初試圖在下面的代碼中獲取消息細節作爲概念證明。試圖從保存的.msg文件使用VBA提取Outlook附件

一旦我有這個工作,我可以通過循環處理文件和處理附件。我在該網站上發現了很多代碼,用於從仍在Outlook中的電子郵件中提取附件,但我無法訪問Outlook文件夾並且原始郵件已被刪除。

Sub ExtractExcel() 
Dim aExcel As Outlook.Attachment 
Dim stFilePath As String 
Dim stFileName As String 
Dim stAttName As String 
Dim stSaveFolder As String 
Dim oEmail As Outlook.MailItem 


'~~> Outlook Variables for email 
Dim eSender As String, dtRecvd As String, dtSent As String 
Dim sSubj As String, sMsg As String 


stFilePath = "Y:\Purchasing\The Team\User Name\Supply Chain Admin - Outlook\New-Revised Orders\FW Mail Order Daffodil.msg" 
stSaveFolder = "C:\Projects\SOTD\PO_Excel" 

Debug.Print stFilePath 
Debug.Print stSaveFolder 

oEmail = stFilePath 


With oEmail 
    eSender = oEmail.SenderEmailAddress 
    dtRecvd = oEmail.ReceivedTime 
    dtSent = oEmail.CreationTime 
    sSubj = oEmail.Subject 
    sMsg = oEmail.Body 

Debug.Print eSender 
Debug.Print dtRecvd 
Debug.Print dtSent 
Debug.Print sSubj 
Debug.Print sMsg 
End With 

End Sub 

我使用Excel VBA,因爲我很熟悉它,但很高興有任何其他策略建議。任何和所有的指針感激地收到。
感謝
凱爾

+0

你看過CreateItemFromTemplate從http://stackoverflow.com/questions/7890612/vba-code-to-save-an-attachment-excel-file-from-an-outlook-email-that-was-insid/7916444#7916444? – brettdj

回答

0

VBA Code to save an attachment (excel file) from an Outlook email that was inside another email as an attachment使用CreateItemFromTemplate你可以

  • 開放味精文件從C:\temp\
  • 帶所有附件C:\temp1\

代碼

Sub SaveOlAttachments() 

Dim msg As Outlook.MailItem 
Dim att As Outlook.Attachment 
Dim strFilePath As String 
Dim strAttPath As String 

    'path for creating msgs 
strFilePath = "C:\temp\" 
    'path for saving attachments 
strAttPath = "C:\temp1\" 

strFile = Dir(strFilePath & "*.msg") 
Do While Len(strFile) > 0 
    Set msg = Application.CreateItemFromTemplate(strFilePath & strFile) 
    If msg.Attachments.Count > 0 Then 
     For Each att In msg.Attachments 
      att.SaveAsFile strAttPath & att.FileName 
     Next 
    End If 
    strFile = Dir 
Loop 

End Sub 
+0

感謝您的幫助。我在Set msg行收到錯誤:運行時錯誤438「對象不支持此屬性或方法」 –

+0

已修復它!在Outlook中代碼而不是Excel,它已經工作。非常感謝您的幫助:-) –

+1

您可以從Excel中運行它。 (1)引用Outlook對象庫(2)將'Dim app作爲Outlook.Application'添加到您的聲明中(3)使用'app'而不是'Application'。 – Vlad

0

使用Namespace.OpenSharedItem。不要使用CreateItemFromTemplate - 它會清除很多屬性(例如與發件人相關的屬性)。

+0

不知道爲什麼這是OP想剝離附件的問題? – brettdj

+0

對於正在閱讀此線程的其他人來說,如果他們想要提取除附件以外的屬性,則會出現問題。 –

相關問題