【Outlook VBA】今開いているメールのAttachmentsコレクションを取得する方法

 

 

outlook,vba,Attachments,eyecatch
みなさまこんにちは、ノグチです。

何度かの連載で、Outlook VBAでOutlookでウインドウで開いているメールの添付ファイルを、ワンクリックで任意のフォルダに格納する方法をご紹介しています。

【Outlook VBA】今開いているOutlookウインドウを操作しよう!Inspectorオブジェクトの取得
Outlook vbaで、メールの添付ファイルをワンクリックで指定フォルダに保存する方法を複数回記事にわたってご紹介していきます。今回は、ActiveInspectionメソッドで、今開いているOutlookウインドウのInspectorオブジェクトを取得する方法をご紹介しています。
【Outlook VBA】CurrentItemプロパティで今開いているメールのMailItemオブジェクトを取得する方法
Outlook VBAで、今開いているメールの添付ファイルをワンクリックで任意のフォルダに保存する方法を5ステップにわけて、連載記事でご紹介しています。今回は、InspectorオブジェクトのCurrentItemプロパティによるMailItemオブジェクトの取得についての説明です。

前回の記事では、InspectorオブジェクトのCurrentItemプロパティで、今開いているウインドウをOutlookのItemオブジェクトとして取得する方法をご紹介しました。

今回の記事では、前回取得したOutlookアイテムオブジェクトのMailItemオブジェクトから、Attachmentsコレクションを取得する方法をご紹介していきます。

スポンサーリンク

前回までのおさらい

Outlook VBAでOutlookでウインドウで開いているメールの添付ファイルを、ワンクリックで任意のフォルダに格納するためには、VBAで以下のステップを経ることになります。

  1. 今開いているOutlookのウインドウのInspectorオブジェクトを取得
  2. 取得できたInspectorオブジェクトからMailitemオブジェクトを取得
  3. 取得できたMailItemオブジェクトからAttachmentsコレクションを取得
  4. Attachmentsコレクションから添付ファイルのAttachmentオブジェクトを取得
  5. 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プロパティで取得することができます。

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件ずつメールを開いて、添付ファイルをクリックして、保存先のフォルダを選んで...なんて地味に面倒な作業とはオサラバです。

  1. 【Outlook VBA】今開いているOutlookウインドウを操作しよう!Inspectorオブジェクトの取得
  2. 【Outlook VBA】CurrentItemプロパティで今開いているメールのMailItemオブジェクトを取得する方法
  3. 【Outlook VBA】今開いているメールのAttachmentsコレクションを取得する方法
  4. 【Outlook VBA】メールの添付ファイルをワンクリックで指定フォルダに保存する方法
  5. 【Outlook VBA】受信フォルダにあるメールの添付ファイルを指定フォルダに取り出す方法

 

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