sans_souciの日記

無憂茶房

excel/vba で outlook の メールを操作

事前に参照設定を読み込んでおく必要あり、次の二つ。

お借りしたソース:

胴元/参考

''' >>> ActiveX のボタンを経由して操作する

Private Sub CommandButton1_Click()


   '''
    Dim InboxFolder, subfolder, i, n, k, attno As Long
    Dim sender, mes, path1 As String
    Dim outlookObj As Outlook.Application
    Dim myNameSpace, objmailItem As Object
    Dim fso As FileSystemObject

    ''' >>> outlook に関する 編集を設定
    Set outlookObj = CreateObject("Outlook.Application")
    Set myNameSpace = outlookObj.GetNamespace("MAPI")
    Set InboxFolder = myNameSpace.GetDefaultFolder(6)
    Set subfolder = InboxFolder.Folders("out01")
    Set finfolder = subfolder.Folders("fin")
    
    n = 11

    ''' >>> 保存先のディレクトリを設定
    mes = InputBox("メールの添付資料を保管用フォルダを新しく作成します。フォルダ名を入力してください")
    path1 = ThisWorkbook.Path & "\" & mes
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CreateFolder (path1)

    ''' >>> 解析する受信メールの範囲を毛低
    ''' >>> MsgBox subfolder.Items.Count
    For i = subfolder.Items.Count To 1 Step -1
        Set objmailItem = subfolder.Items(i)

        '''--- 受信メールの件数、受信日時、件名(タイトル)、送信者名、送信元のメールアドレス、内容(本文)を取得
        ' 他の要素は要調査
        ''' Range("A" & n).Value = i
        Range("A" & n).Value = n - 10
        Range("B" & n).Value = objmailItem.ReceivedTime
        Range("C" & n).Value = objmailItem.Subject
        Range("D" & n).Value = objmailItem.SenderName
        Range("E" & n).Value = objmailItem.SenderEmailAddress
        ''' Range("F" & n).Value = Left(objmailItem.Body, 100)
        Range("F" & n).Value = " " & objmailItem.Body

        '''--- メールの添付ファイルを保管する

        attno = objmailItem.Attachments.Count
        If attno > 0 Then
            For k = 1 To attno
                objmailItem.Attachments(k).SaveAsFile (path1 & "\" & objmailItem.Attachments(k).DisplayName)
            Next
            Range("G" & n).Value = k
        Else
            Range("G" & n).Value = "なし"
        End If

        ' objmailItem.Copy
        objmailItem.Move finfolder
        
        n = n + 1
    Next

    '''--- セットした変数を解除
    Set outlookObj = Nothing
    Set myNameSpace = Nothing
    Set InboxFolder = Nothing
    Set finfolder = Nothing

End Sub

予定: 本文をテキストとして生成する操作方法を確認する。