【VBA】【Excel】CDO.Messageを使ったメール解析プログラム例

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office
Sub メール解析sample()
    '参照設定 Microsoft CDO for Windows 2000 Library
    Dim CDOMsg As CDO.Message
        
    Dim Ws As Worksheet
    Dim RowIndex As Long, ColmunIndex As Long
    
    Dim FileName As String
    
    Set Ws = ActiveSheet
    Set CDOMsg = GetMessage(FileName)
    
    FileName = "C:\test.eml"
    
    RowIndex = 1
    ColmunIndex = 1
    Ws.Cells(RowIndex, ColmunIndex) = FileCount
    Ws.Cells(RowIndex, ColmunIndex + 1) = CDOMsg.Subject
    Ws.Cells(RowIndex, ColmunIndex + 2) = CDOMsg.From
    Ws.Cells(RowIndex, ColmunIndex + 3) = CDOMsg.To
    Ws.Cells(RowIndex, ColmunIndex + 4) = CDOMsg.CC
    Ws.Cells(RowIndex, ColmunIndex + 5) = CDOMsg.BCC
    Ws.Cells(RowIndex, ColmunIndex + 6) = CDOMsg.SentOn
    Ws.Cells(RowIndex, ColmunIndex + 7) = CDOMsg.ReceivedTime
    Ws.Cells(RowIndex, ColmunIndex + 8) = CDOMsg.Attachments.Count
    
    If CDOMsg.Attachments.Count <> 0 Then
        Dim Attachment As IBodyPart
        Dim i As Long
        For i = 1 To CDOMsg.Attachments.Count
            Set Attachment = CDOMsg.Attachments(i)
            If Ws.Cells(RowIndex, ColmunIndex + 9) = "" Then
                Ws.Cells(RowIndex, ColmunIndex + 9) = Attachment.FileName
            Else
                Ws.Cells(RowIndex, ColmunIndex + 9) = Ws.Cells(RowIndex, ColmunIndex + 9) & "," & Attachment.FileName
            End If
        Next i
    End If
    

End Sub



'参考URL
'https://docs.microsoft.com/en-us/previous-versions/exchange-server/exchange-10/ms526988(v=exchg.10)
Private Function GetMessage(ByVal FilePath As String) As CDO.Message
    '参照設定 Microsoft CDO for Windows 2000 Library
    '参照設定 Microsoft ActiveX Data Objects x.x Library

    
    'emlファイルからMessage取得
    Dim ADOStream As ADODB.Stream
    Dim CDOMsg As CDO.Message
    Set ADOStream = New ADODB.Stream
    Set CDOMsg = New CDO.Message
    
    ADOStream.Open
    ADOStream.LoadFromFile FilePath
    CDOMsg.DataSource.OpenObject ADOStream, "_Stream"
    ADOStream.Close
    Set GetMessage = CDOMsg

    'ADOStreamはここまで
    Set ADOStream = Nothing
    
End Function
 

文書情報

記事タイトル
【VBA】【Excel】CDO.Messageを使ったメール解析プログラム例
作成日
更新日
Source URL
https://papanda925.com/?p=1424

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました