みなさまこんにちは、ノグチです。
メールに添付されたファイルを、自分のPCやGoogleドライブ等に保存しておきたいことってありますよね。
Outlookで添付ファイルを保存しようとすると、まず添付ファイルを選択して、ドロップダウンメニューから「名前を付けて保存」をクリックして、保存先のフォルダを選択して…と、大した手間ではないですが地味に面倒だったりします。
1ファイルだけとかならまだしも、複数のメールに対してこの作業をやるとすると、面倒臭いことこの上ありません。
ということで今回から複数回記事渡って、Outlook VBAで、ワンクリックで今開いているメールの添付ファイルを指定のフォルダに保存する方法をご紹介していきます。
メール添付ファイルをフォルダに保存するまでの大まかな流れ
さて、添付ファイルをワンクリックで!と申し上げましたが、VBAでのそこまでの道のりは少々ややこしいので、先に大まかな流れをご紹介しておきますね。
- 今開いているOutlookのウインドウのInspectorオブジェクトを取得
- 取得できたInspectorオブジェクトからMailitemオブジェクトを取得
- 取得できたMailItemオブジェクトからAttachmentsオブジェクトを取得
- Attachementsオブジェクトから添付ファイルのAttachementオブジェクトを取得
- AttachmentオブジェクトのSaveAsFileメソッドで、添付ファイルを任意フォルダに保存
これが大まかな流れなのですが、読んだだけでは「なんのこっちゃ」ですよね。
順を追ってご紹介していきます。
今回の記事では、
- 今開いているOutlookのウインドウのInspectorオブジェクトを取得
についてご紹介をしていきたいと思います。
ActiveInspectorメソッドでInspectorオブジェクトを取得する
Inspectorオブジェクトとは?
まずは、Outlookのウインドウで今開いているアイテムの情報を取得しましょう。
Outlookで今開いているアイテムのウインドウ(メール、予定、連作先など)は、Inspectorオブジェクトで操作します。
Inspectorオブジェクトは、「今、Outlookで開かれているウインドウ」を操作するオブジェクトです。
この「Outlookで」というところがポイントで、IEやExcelのウインドウを同時に開いていたとしても、このオブジェクトで操作できるのは、あくまでOutlookで開いているウインドウ、すなわちメール、予定、連絡先、タスクなどのOutlookのアイテムウインドウのみです。
ActiveInspectorメソッド
そしてこのInspectorオブジェクトを取得するためのメソッドが、ApplicationオブジェクトのActiveInspectorメソッド。
ActiveInspectorオブジェクトは、Outlookの「今画面に表示されている」アイテムをInspectorオブジェクトとして返してくれるメソッドです。
複数のOutlookウインドウをを開いていた場合は?
注意ですがActiveInspectorメソッドを実行した時に、このように複数のOutlookウインドウを開いていた場合、一番手前のウインドウがInspectorオブジェクトとして返されることになります。
図の場合だと、メールA~Cの3つのウインドウが開いていますが、この状態でActiveInspectorメソッドを実行すると、メールAのウインドウがInspectorオブジェクトとして返ってくるということですね。
Outlookウインドウを開いていなかった場合は?
ちなみに、Outlookのアイテムウインドウを開いていない状態でActiveInspectorメソッドを実行すると…
この通り、実行時エラーとなってしまいます。
ウインドウが開いていなければ、取得できるオブジェクトもありませんからね。
とはいえ、「取得できるオブジェクトがありません」のようなエラーメッセージにはならないものかな?とは思ってしまいます。
Inspectorオブジェクト取得をコードにしてみる
さて、ここまで最初にご紹介した大まかな流れのうち、
- 今開いているOutlookのウインドウのInspectorオブジェクトを取得
をご紹介しました。
ここまでをVBAコードに落としてみると、こんなコードになります。
Sub SaveAttachmentFile() Dim objIns As Inspector Set objIns = Application.ActiveInspector End Sub
最後に
今回は、Outlookのメール添付ファイルをフォルダに保存するための手順の一部として、InsPectorオブジェクトとは?と、今開いているOutlookウインドウのInspectorオブジェクトの取得方法をご紹介しました。
最初の大まかな流れでご紹介した通り、色々なメソッドやプロパティを駆使しますが、整理して順を追っていけば、特別に難しいことではありません。
次回記事では、今回の記事で取得したInspectorオブジェクトからMailItemオブジェクト取得についてご紹介していきます。
それでは、最後までお読みいただきありがとうございました!
連載目次:Outlook VBAでメールの添付ファイルを操作しよう
Outlook VBAでメールの添付ファイルを指定フォルダにワンクリックで保存する方法をご紹介しています。1件ずつメールを開いて、添付ファイルをクリックして、保存先のフォルダを選んで...なんて地味に面倒な作業とはオサラバです。