【Outlook VBA】CurrentItemプロパティで今開いているメールのMailItemオブジェクトを取得する方法


vba,outlook,currentitem,eyecatch

みなさまこんにちは、ノグチです。

前回から複数回の記事に分けて、Outlookのメールに添付されたファイルを、ワンクリックで任意のフォルダに格納する方法をご紹介しています。

前回の記事では、ActiveInspectorメソッドを使って、今ウインドウを開いているOutlookのアイテムを、Inspectorオブジェクトとして取得する方法をご紹介しました。

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

今回記事では、前回取得したInspectorオブジェクトから、OutlookアイテムのオブジェクトをCurrentItemプロパティで取得する方法をご紹介していきます。

前回のおさらい

まずは前回までのおさらいをしておきましょう。

「今開いているメールの添付ファイルをワンクリックで任意フォルダに格納する方法」をVBAでコーディングするにあたっては、こんなステップを経ることになります。

  1. 今開いているOutlookのウインドウのInspectorオブジェクトを取得
  2. 取得できたInspectorオブジェクトからMailitemオブジェクトを取得
  3. 取得できたMailItemオブジェクトからAttachmentsオブジェクトを取得
  4. Attachmentsオブジェクトから添付ファイルのAttachmentオブジェクトを取得
  5. AttachmentオブジェクトのSaveAsFileメソッドで、添付ファイルを任意フォルダに保存

上の5つのステップのうち、「1.今開いているOutlookのウインドウのInspectorオブジェクトを取得」については、前回記事でご紹介しました。

そして、Inspectorオブジェクトを取得するVBAコードがこちらです。

今Outlookで開いているアイテムウインドウのオブジェクトを、ActiveInspectorメソッドでInspectorオブジェクトとして取得するのでしたね。

今回の記事から、このコードにプロパティやメソッドを追加していきましょう。

メールウインドウの情報をCurrentItemプロパティで取得

さて、上のコードで今Outlookで開いているウインドウをInspectorオブジェクトとして取得出来たら、お次はステップ2の「取得できたInspectorオブジェクトからMailItemオブジェクトを取得」です。

MailItemオブジェクトってなんだっけ?

「MailItemオブジェクトって何だっけ?」という方は、下記の記事でご紹介していますので併せてご覧下さい。

【エクセルVBA】Outlookでメールを作成・送信する方法
エクセルシートに記入された件名や本文を、エクセルVBAによってOutlookのメールの件名と本文にセットしてメール送信する方法をご紹介しています。VBAでメールの送信ができれば、宛先に応じてメールの本文を変えつつ一斉に送信することもできますよ。

CurrentItemプロパティとは

InspectorオブジェクトからこのMailItemオブジェクトを取得するために使用するのが、InspectorオブジェクトのCurrentItemプロパティ

CurrentItemプロパティは、Inspectorオブジェクトで取得した、今開いているOutlookウインドウのアイテムオブジェクトを取得することができるプロパティです。

メールであればMailItemオブジェクトを、予定であればAppointmentItemオブジェクトを取得することができます。

記述方法はコチラ。

Inspectorオブジェクト.CurrentItem

Inspectorオブジェクト取得からMailItemオブジェクト取得までをコードにする

さて、ここまでで冒頭に示したステップの1と2のInspectorオブジェクトの取得と、CurrentItemプロパティを使ったMailItemオブジェクトの取得までをご紹介しました。

一旦ここまでをVBAコードにすると、こんなコードになります。

5行目と6行目でInspectorオブジェクトの取得とMailItemオブジェクトの取得を分けて記述していますが、こんな風に1行にまとめてしまってもOKです。

実行結果

そしてこのコードを実際に実行してみると、こんな感じになります。

メールのウインドウを開いてコードを実行してみると…

vba,outlook,CurrentItem,実行結果

この通り、Inspectorオブジェクトから、メールのアイテムオブジェクトであるMailItemオブジェクトが取得できていますね。

もちろん、Outlookアイテムのウインドウを開いていなかった場合は実行時エラーになってしまうので注意しましょう。

これで、今開いているメールのMailitemオブジェクトが取得できました。

最後に

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

次回記事では、ステップ3の「取得できたMailItemオブジェクトからAttachmentsオブジェクトを取得からご説明をしていきます。

【Outlook VBA】今開いているメールのAttachmentsコレクションを取得する方法
何度かの連載で、Outlookで今開いているメールの添付ファイルを任意のフォルダに、ワンクリックで保存する方法をご紹介しています。今回は、メールの添付ファイルのオブジェクトがまとまったAttachmentsコレクションの取得についてのご紹介です。

それでは最後までお読みいただき、ありがとうございました!

連載目次:はじめてのOutlook VBA

Outlook VBAで、予定やタスクの登録方法など、Outlookを操作する方法をご紹介しています。メーラーやスケジューラとして便利なOutlookですが、VBAで更に便利なツールにしてしまいましょう!

  1. 【はじめてのOutlook VBA】Outlookの予定を登録する方法
  2. 【Outlook VBA】エクセルワークシートの内容で予定登録する方法
  3. 【Outlook VBA】今開いているOutlookウインドウを操作しよう!Inspectorオブジェクトの取得
  4. 【Outlook VBA】CurrentItemプロパティで今開いているメールのMailItemオブジェクトを取得する方法
  5. 【Outlook VBA】今開いているメールのAttachmentsコレクションを取得する方法

  投稿者プロフィール

ノグチフリーランスPG・SE
元製造子会社SE。
業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁと日々夢見ております。

コメント