VBA学習日記🖊 _03

特に空の写真に意味はないですけどね。
空が好きなんですね。
はい。

ということでOutlookです。
外を見ろってことかな( ´∀` )

受信メールの添付ファイルを保存する方法。

実はこれがやりたくてOutlook勉強したようなもんです。

なんだかんだといろんな記事を見たけどまとめるとこんな感じ

Outlook.Applicationオブジェクトからの~

Namespaceオブジェクトからの~

Folderオブジェクトからの~
(GetDefaultFolderはフォルダを操作するメソッドらしい。)
(引数はolFolderInbox)

Itemメソッドでサブフォルダ取得からの~

最後にItemsで内容を取得。全体的にはこんな感じ。

Option Explicit

Sub G_添付ファイル書出し2()
    '特定のフォルダから添付ファイルを取得して書き出し・保存
    
    Dim myOutlook    As Outlook.Application
    Dim myNamespace  As Outlook.Namespace         'Outlookのメールや予定表、連絡先等のデータにアクセスする事ができるオブジェクト
    Dim myInbox      As Folder
    Dim mySubfolder  As Folder
    Dim myAttachment As Attachment
    Dim path         As String
    Dim file         As String
    
    
    Set myOutlook = New Outlook.Application
    Set myNamespace = myOutlook.GetNamespace("MAPI")           'GetNamespaceメソッドでNamespaceオブジェクトを取得
    Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)   'GetDefaultFolderはフォルダを操作するメソッド(Folderオブジェクトを作成)
    Set mySubfolder = myInbox.Folders.Item("サブフォルダ1")    'FoldersオブジェクトのItemメソッドで指定のフォルダーを操作
    
  Dim i As Long
    
    path = "C:\テスト添付ファイル保存\"
    
    
    For i = 4 To mySubfolder.Items.Count
        With ThisWorkbook.Worksheets("受信メール2")
            .Cells(i, 1).Value = mySubfolder.Items(i).SentOn
            .Cells(i, 2).Value = mySubfolder.Items(i).Subject
            .Cells(i, 3).Value = mySubfolder.Items(i).Body
            For Each myAttachment In mySubfolder.Items(i).Attachments
                file = path & myAttachment
                myAttachment.SaveAsFile file
            Next
        End With
    Next   
    
End Sub

順番でいうと
アプリケーション(Outlook)

Namespaceオブジェクト(この辺の立ち位置がようわからんけどw)

フォルダー

サブフォルダ

メール内容

です。

あ、分かりづらいけど取得したメールの情報はシートに書き出してます。
(全体に説明が雑w)

やってみると簡単だけどね。
やっぱコード書いて動かすのが1番です。

そうそう、本題を忘れてましたが( ´∀` )

Attachmentsでメールの添付ファイル情報を取得します。
1件のメールに複数添付ファイルが存在する場合もあるので、
それをFor Eachで順に取りだすって感じかな。

以上です。

振り返ると意外と簡単だったのであまり成長した感がないですが、
コツコツ頑張ります。(/・ω・)/

この記事が気に入ったらサポートをしてみませんか?