VBA学習日記🖊 _03
特に空の写真に意味はないですけどね。
空が好きなんですね。
はい。
ということでOutlookです。
外を見ろってことかな( ´∀` )
受信メールの添付ファイルを保存する方法。
実はこれがやりたくてOutlook勉強したようなもんです。
なんだかんだといろんな記事を見たけどまとめるとこんな感じ
↓
Outlook.Applicationオブジェクトからの~
![](https://assets.st-note.com/img/1644707563872-1PZT4cL5Dw.png)
Namespaceオブジェクトからの~
![](https://assets.st-note.com/img/1644707635587-xckamCx3Sa.png)
Folderオブジェクトからの~
(GetDefaultFolderはフォルダを操作するメソッドらしい。)
(引数はolFolderInbox)
![](https://assets.st-note.com/img/1644707700199-EHP4zeu99D.png)
Itemメソッドでサブフォルダ取得からの~
![](https://assets.st-note.com/img/1644707893243-I3yY8RAwrX.png)
最後に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で順に取りだすって感じかな。
以上です。
振り返ると意外と簡単だったのであまり成長した感がないですが、
コツコツ頑張ります。(/・ω・)/
この記事が気に入ったらサポートをしてみませんか?