何度かの連載で、Outlook VBAでOutlookでウインドウで開いているメールの添付ファイルを、ワンクリックで任意のフォルダに格納する方法をご紹介しています。
前回の記事では、InspectorオブジェクトのCurrentItemプロパティで、今開いているウインドウをOutlookのItemオブジェクトとして取得する方法をご紹介しました。
今回の記事では、前回取得したOutlookアイテムオブジェクトのMailItemオブジェクトから、Attachmentsコレクションを取得する方法をご紹介していきます。
前回までのおさらい
Outlook VBAでOutlookでウインドウで開いているメールの添付ファイルを、ワンクリックで任意のフォルダに格納するためには、VBAで以下のステップを経ることになります。
- 今開いているOutlookのウインドウのInspectorオブジェクトを取得
- 取得できたInspectorオブジェクトからMailitemオブジェクトを取得
- 取得できたMailItemオブジェクトからAttachmentsコレクションを取得
- Attachmentsコレクションから添付ファイルのAttachmentオブジェクトを取得
- AttachmentオブジェクトのSaveAsFileメソッドで、添付ファイルを任意フォルダに保存
前回までの記事では、このステップ2の取得できたInspectorオブジェクトからMailitemオブジェクトを取得までをご紹介しました。
そしてこのステップ2まででできたコードがこちらです。
Sub SaveAttachmentFile() Dim objIns As Inspector Dim objItem As Object Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem '今開いているメールのMailItemオブジェクトを取得 End Sub
Outlookで開いているアイテムウインドウのInspectorオブジェクトをActiveInspectorメソッドで取得し、MailitemオブジェクトをCurrentItemプロパティで取得するまでが上記コードです。
今回も、記事の内容を上のコードに追加していきましょう!
Attachmentsコレクションを取得
さて、前回記事でMailItemオブジェクトが取得できました。
そうするとお次は、
3.取得できたMailItemオブジェクトからAttachmentsコレクションを取得
のステップです。
Attachmentsコレクションとは
添付ファイルを操作するためにまず取得するのが、Attachmentsコレクション。
Attachmentsコレクションは、添付ファイルそのもののオブジェクトではなく、Outlookアイテムの添付ファイルがまとまったものです。
1つ1つの添付ファイルが入っている、大きな箱を想像していただくとわかりやすいかもしれません。
このオブジェクトは、MailItemオブジェクトのAttachmentsプロパティで取得することができます。
Attachmentsコレクションを取得するコード
MailItemオブジェクトのAttachmentsプロパティでAttachmentsコレクション取得を上のコードに追加すると、こうなります。
Sub SaveAttachmentFile() Dim objItem As Object Dim objIns As Inspector Dim objAttchments As Object Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem '今開いているメールオブジェクトを取得 Set objAttchments = objItem.Attachments ’Attachmentsコレクションを取得 End Sub
MailItemの取得とAttachmentsコレクションの取得を1行にまとめて記述することもできます。
こんな感じ。
Set objItem =objIns.CurrentItem.Attachments
これで、Attachmentsコレクションを取得することができました。
Attachmentsコレクション ≠ 添付ファイルのオブジェクト
「添付ファイルのオブジェクトを取得できたなら、もう添付ファイルの操作ができるんじゃないの?」と思いますよね。
先にお伝えした通り、このAttachmentsコレクションは、添付ファイルそのものではなく、1つ1つの添付ファイルが入った大きな箱のようなものです。
添付ファイルを保存したり削除したりといった操作をするためには、この箱の中に入った添付ファイル1つ1つをオブジェクトとして取り出して、取り出した一つ一つの添付ファイルに対して操作をしていかねばなりません。
その方法は、次回の記事でご紹介していきますね。
最後に
今回は、Outlookのウインドウで開いているメールのAttachmentsコレクションを取得する方法をご紹介しました。
ここまでくれば、ゴールはもう目前です。
次回記事では、ステップ4のAttachmentsコレクションから添付ファイルのAttachmentオブジェクトを取得する方法からご紹介していきます。
それでは、最後までお読みいただきありがとうございました!
連載目次:Outlook VBAでメールの添付ファイルを操作しよう
Outlook VBAでメールの添付ファイルを指定フォルダにワンクリックで保存する方法をご紹介しています。1件ずつメールを開いて、添付ファイルをクリックして、保存先のフォルダを選んで...なんて地味に面倒な作業とはオサラバです。
- 【Outlook VBA】今開いているOutlookウインドウを操作しよう!Inspectorオブジェクトの取得
- 【Outlook VBA】CurrentItemプロパティで今開いているメールのMailItemオブジェクトを取得する方法
- 【Outlook VBA】今開いているメールのAttachmentsコレクションを取得する方法
- 【Outlook VBA】メールの添付ファイルをワンクリックで指定フォルダに保存する方法
- 【Outlook VBA】受信フォルダにあるメールの添付ファイルを指定フォルダに取り出す方法