みなさまこんにちは、ノグチです。
前回から複数回の記事に分けて、Outlookのメールに添付されたファイルを、ワンクリックで任意のフォルダに格納する方法をご紹介しています。
前回の記事では、ActiveInspectorメソッドを使って、今ウインドウを開いているOutlookのアイテムを、Inspectorオブジェクトとして取得する方法をご紹介しました。
今回記事では、前回取得したInspectorオブジェクトから、OutlookアイテムのオブジェクトをCurrentItemプロパティで取得する方法をご紹介していきます。
前回のおさらい
「今開いているメールの添付ファイルをワンクリックで任意フォルダに格納する方法」をVBAでコーディングするにあたっては、こんなステップを経ることになります。
- 今開いているOutlookのウインドウのInspectorオブジェクトを取得
- 取得できたInspectorオブジェクトからMailitemオブジェクトを取得
- 取得できたMailItemオブジェクトからAttachmentsオブジェクトを取得
- Attachmentsオブジェクトから添付ファイルのAttachmentオブジェクトを取得
- AttachmentオブジェクトのSaveAsFileメソッドで、添付ファイルを任意フォルダに保存
上の5つのステップのうち、「1.今開いているOutlookのウインドウのInspectorオブジェクトを取得」については、前回記事でご紹介しました。
そして、Inspectorオブジェクトを取得するVBAコードがこちらです。
Sub SaveAttachmentFile() Dim objIns As Inspector Set objIns = Application.ActiveInspector End Sub
今Outlookで開いているアイテムウインドウのオブジェクトを、ActiveInspectorメソッドでInspectorオブジェクトとして取得するのでしたね。
今回の記事から、このコードにプロパティやメソッドを追加していきましょう。
メールウインドウの情報をCurrentItemプロパティで取得
さて、上のコードで今Outlookで開いているウインドウをInspectorオブジェクトとして取得出来たら、お次はステップ2の「取得できたInspectorオブジェクトからMailItemオブジェクトを取得」です。
MailItemオブジェクトってなんだっけ?
「MailItemオブジェクトって何だっけ?」という方は、下記の記事でご紹介していますので併せてご覧下さい。
CurrentItemプロパティとは
InspectorオブジェクトからこのMailItemオブジェクトを取得するために使用するのが、InspectorオブジェクトのCurrentItemプロパティ。
CurrentItemプロパティは、Inspectorオブジェクトで取得した、今開いているOutlookウインドウのアイテムオブジェクトを取得することができるプロパティです。
メールであればMailItemオブジェクトを、予定であればAppointmentItemオブジェクトを取得することができます。
記述方法はコチラ。
Inspectorオブジェクト取得からMailItemオブジェクト取得までをコードにする
さて、ここまでで冒頭に示したステップの1と2のInspectorオブジェクトの取得と、CurrentItemプロパティを使ったMailItemオブジェクトの取得までをご紹介しました。
一旦ここまでをVBAコードにすると、こんなコードになります。
Sub SaveAttachmentFile() Dim objIns As Inspector Dim objItem As Object Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem '今開いているメールのMailItemオブジェクトを取得 End Sub
5行目と6行目でInspectorオブジェクトの取得とMailItemオブジェクトの取得を分けて記述していますが、こんな風に1行にまとめてしまってもOKです。
Set objItem = Application.ActiveInspector.CurrentItem
実行結果
そしてこのコードを実際に実行してみると、こんな感じになります。
メールのウインドウを開いてコードを実行してみると…
この通り、Inspectorオブジェクトから、メールのアイテムオブジェクトであるMailItemオブジェクトが取得できていますね。
もちろん、Outlookアイテムのウインドウを開いていなかった場合は実行時エラーになってしまうので注意しましょう。
これで、今開いているメールのMailitemオブジェクトが取得できました。
最後に
今回は、InspectorオブジェクトのCurrentItemプロパティによる今Outlookで開いているウインドウのアイテムオブジェクトの取得方法をご紹介しました。
次回記事では、ステップ3の「取得できたMailItemオブジェクトからAttachmentsオブジェクトを取得」からご説明をしていきます。
それでは最後までお読みいただき、ありがとうございました!
連載目次:Outlook VBAでメールの添付ファイルを操作しよう
Outlook VBAでメールの添付ファイルを指定フォルダにワンクリックで保存する方法をご紹介しています。1件ずつメールを開いて、添付ファイルをクリックして、保存先のフォルダを選んで...なんて地味に面倒な作業とはオサラバです。