【エクセルVBA】GetNamespaceメソッドでOutlookのデータフォルダにアクセスする方法


vba,NameSpace,eyecatch

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

エクセルVBAでOutlookを操作する方法を、何度かの記事に渡ってご紹介しています。

前回までは、エクセルシートの内容をメールで送信したり、連絡先に登録する方法をご紹介してきました。

【エクセルVBA】Outlookでメールを作成・送信する方法
エクセルシートに記入された件名や本文を、エクセルVBAによってOutlookのメールの件名と本文にセットしてメール送信する方法をご紹介しています。VBAでメールの送信ができれば、宛先に応じてメールの本文を変えつつ一斉に送信することもできますよ。
エクセルVBAでOutlookの連絡先を登録する方法
エクセルVBAでOutlookの連絡先を登録する方法をご紹介しています。この方法なら、エクセルシートに書かれたリストで連絡先を渡されても、サクサク連絡先が登録できますよ。OutlookにはエクセルやCSVファイルからデータをインポートして連絡先を登録する機能もありますが、そちらでは物足りない!という方にオススメです。

お仕事をしていると、あるプロジェクトや取引先、チームなどに関連するメールだけをエクセルシートに書き出したいな…ということ、ありませんか?

或いは、アンケートの回答をメールで送信してもらったりして、それをエクセルシートに並べてみて分析したい…なんてこともあるかもしれません。

それ、VBAを使えば自動化できるかもしれませんよ。

ということで今回からは、エクセルVBAからOutlookのメールフォルダにアクセスして、フォルダ内のメールの内容をエクセルシートにリストとして出力する方法を、順を追ってご紹介していきます。

今回は、そのメールフォルダへアクセスする準備として、GetNamespaceメソッドでOutlookのNamespaceオブジェクトの取得する方法をご紹介します。

Namespaceオブジェクトとは

さて、最初にメールフォルダの中身をエクセルシートに書き出す、と言いましたが、そのためにはまずメールのデータが格納されているフォルダにアクセスしなければいけませんね。

そのために使うのがOutlookApplicationオブジェクトのNamespaceオブジェクト

Namespaceオブジェクトは、Outlookのメールや予定表、連絡先といった様々なデータにアクセスすることができるオブジェクトです。

GetNamespaceメソッドでNamespaceオブジェクトを取得する

このNamespaceオブジェクトを取得するには、OutlookApplicationオブジェクトのGetNamespaceメソッドを使います。

記述方法はこちら。

OutlookApplicationオブジェクト.GetNamespace(“MAPI”)

引数には、取得したいNamespaceの型を指定する…のですが、現在のところ指定できるのはOutlookのMesseging Application Programming Interface(メッセージアプリケーションの構造)を表す“MAPI”だけですので、記述方法をそのまま覚えてしまうといいですね。

このメソッドを使うことで、Outlookで設定されているアカウントのメール、予定表、連絡先などのデータが格納されているフォルダにアクセスすることができます。

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

取得したNamespaceオブジェクトを確認する

上のコードを実行して、NamespaceオブジェクトでOutlookのデータが取得できているかを確認しましょう。

Namespace型変数のmyNamespaceの内容を確認してみます。

色々なプロパティがありますが、分かりやすいところで、メールフォルダの名前が取得できているかを見てみると…

vba,getnamespace,オブジェクト,取得

この通り、メールフォルダの名称が取得できています。

Namespaceオブジェクトが取得できるプロファイル

このGetNamespaceメソッドを実行すると、Outlookで既定のプロファイルになっているプロファイルのデータを取得します。

Outlookには、複数のプロファイルを指定することができるようになっていますね。

「Outlookのプロファイルって何?」という方は、下記のページが参考になるかもしれません。

MicroSoft Outlook 電子メール プロファイルの概要

例えば、「Aさん」と「Bさん」が1台のPCを共有しているとしましょう。(PCのログオンユーザーも同じ)

Outlookでは、「Aさん」用のメール、予定表、連絡先等のデータを、「Bさん」用のOutlook用のデータを、それぞれプロファイルとして保持することができます。

Outlookを起動した時に「Aさん」のプロファイルを選んでOutlookを起動した場合、「Bさん」のメールや予定表等は見ることができません。

逆も然りです。

Outlookでは各プロファイルそれぞれにメール、連絡先、予定データが作られますが、GetNamespaceメソッドを実行した時取得できるNamespaceオブジェクトは、既定のプロファイルのデータを取得します。

「Aさん」のプロファイルがOutlookの規定プロファイルになっていてGetNamespaceメソッドを実行した場合、「Aさん」のデータが取得されます。

Microsoft Outlook 16.0 Object Libraryの参照設定を忘れずに

ここまでNamespaceオブジェクトやGetNamespaceメソッドをご紹介していますが、これらはVBEでMicrosoft Outlook xx.x Object Libraryの参照設定が必要です。

参照設定をしないまま上の記述方法やコードを書いても、コンパイルエラーになってしまいます。

設定方法はこちらの記事でご紹介していますので、併せてご覧ください。

【エクセルVBA】エクセルVBAでOutlookを操作しよう!参照設定とOutlookアプリケーションオブジェクトの取得
エクセルVBAでOutlookのメール送信やタスク作成操作をする前準備として、VBEの参照設定や、Outlookアプリケーションオブジェクトの取得方法をご紹介しています。 VBAとOutlookを組み合わせて使うことで、既に便利に使えているメーラーを更に便利にできるかもしれませんよ。

最後に

今回は、Namespaceオブジェクトと、GetNamespaceメソッドによるNamespaceオブジェクトの取得方法をご紹介しました。

次回は、このNamespaceオブジェクトとメソッドやプロパティを使って、Outlookの受信メールフォルダとそのサブフォルダにアクセスする方法をご紹介していきたいと思います。

エクセルVBAでOutlookの受信メールフォルダとサブフォルダ名を書き出す方法
エクセルVBAでOutlookの受信メールフォルダにあるメールの内容を、エクセルのワークシートに書き出す方法を、数回の連載でご紹介しています。今回は、GetDefaultFolderメソッドとFoldersプロパティで、受信メールフォルダとサブフォルダの名称を書き出す方法のご紹介です。

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

連載目次:エクセルVBAでOutlookを操作してみよう!

エクセルVBAでOutlookのメール作成、送信などの操作をする方法をご紹介しています。メーラーとして便利なOutlookですが、VBAと組み合わせて更に便利に使ってしまいましょう。

  1. 【エクセルVBA】エクセルVBAでOutlookを操作しよう!参照設定とOutlookアプリケーションオブジェクトの取得
  2. 【エクセルVBA】Outlookでメールを作成・送信する方法
  3. 【エクセルVBA】エクセルシートに一覧化された複数の連絡先に本文を変えつつOutlookでメールを一括送信する方法
  4. エクセルVBAでOutlookメールの下書きを作成・表示して送信前に内容チェックする
  5. エクセルVBAでOutlookの連絡先を登録する方法
  6. 【エクセルVBA】GetNamespaceメソッドでOutlookのデータフォルダにアクセスする方法
  7. エクセルVBAでOutlookの受信メールフォルダとサブフォルダ名を書き出す方法
  8. エクセルVBAでOutlookの受信メールをワークシートに書き出す方法

  投稿者プロフィール

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

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