【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コードがこちらです。

Sub SaveAttachmentFile()
Dim objIns As Inspector
Set objIns = Application.ActiveInspector
End Sub

今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コードにすると、こんなコードになります。

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

実行結果

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

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

vba,outlook,CurrentItem,実行結果

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

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

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

最後に

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

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

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

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

連載目次: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をコピーしました