エクセルVBAでOutlookの受信メールフォルダとサブフォルダ名を書き出す方法


vba,outlook,getdefaultfolder,eyecatch

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

前回から、エクセルVBAでOutlookのメールフォルダにアクセスして、最終的にフォルダ内のメール内容をワークシートに書き出すまでを、順を追ってご紹介しています。

前回の記事では、このメールフォルダを操作するための第一歩として、Namespaceオブジェクトのご紹介と、GetNamespaceメソッドでOutlookのデータフォルダにアクセスする方法をご紹介しました。

【エクセルVBA】GetNamespaceメソッドでOutlookのデータフォルダにアクセスする方法
GetNameSpaceメソッドでOutlookのデータフォルダにアクセスする方法をご紹介しています。このメソッドでOutlookのNameSpaceオブジェクトを取得すれば、メール、連絡先、予定表などのデータフォルダにアクセスして、更にその中のデータを読込んだり、エクセルシートに書き出したりすることができますよ。

今回は、GetNamespaceメソッドで取得したOutlookのデータフォルダのうち、Outlookの受信フォルダーと、そのサブフォルダーにアクセスして、フォルダ名を書き出す方法をご紹介していきます!

スポンサーリンク

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

前回の記事で登場したNamespaceオブジェクトは、Outlookのデータフォルダにアクセスできるオブジェクトであるとご紹介しました。

ただこのNamespaceオブジェクトで取得できるデータフォルダには、メールだけでなく連絡先や予定表のデータフォルダも含まれています。

Outlookのデータフォルダから受信メールを取り出してワークシートに書き出すためには、まずはこのOutlookのデータフォルダ達の中から受信メールのデータフォルダにアクセスせねばなりません。

このOutlookのデータフォルダ達の中から目的のフォルダをFolderオブジェクトとして取得できるのが、NamespaceオブジェクトのGetDefaultFolderメソッドです。

GetDefaultFolderメソッドの記述方法

GetDdefaultFolderメソッドは、指定した種類(メール、予定表、連絡先など)の、既定のデータフォルダを操作するFolderオブジェクトを取得することができるメソッドです。

記述方法はコチラ。

Namespaceオブジェクト.GetDefaultFolder(既定のフォルダーの種類)

この引数に指定できるフォルダーの種類には、たとえばこんなものがあります。

指定値 内容
olFolderInbox 受信トレイフォルダー(メール)
olFolderOutbox 送信トレイフォルダー(メール)
olFolderCalendar 予定表フォルダー
olFolderContacts 連絡先フォルダー
olFolderTasks タスクフォルダー
今回は、受信トレイのフォルダーのFolderオブジェクトが欲しいので、引数にはolFolderInboxを指定します。

受信メールフォルダのFolderオブジェクトを生成するコード

では実際にOutlookの受信メールフォルダーと、そのサブフォルダーにアクセスしてフォルダ名を書き出してみましょう

例えば、Outlookの受信メールフォルダ構成がこうなっているとします。

outlook,フォルダー構成
 
GetDefaultFolderメソッドで、一番上の階層にある「受信トレイ」のFolderオブジェクトを取得するコードがコチラ。
Sub GetmailFolder()
Dim objOutlook As Outlook.Application
Dim myNamespace As Outlook.Namespace
Dim myInbox As Variant
Dim i As Long

Set objOutlook = New Outlook.Application
Set myNamespace = objOutlook.GetNamespace("MAPI")

Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)

Debug.Print myInbox

End Sub

まずはこのコードで、一番上の階層にある「受信トレイ」フォルダのFolderオブジェクトが取得できました。

サブフォルダーをFoldersプロパティで取得する

さて、上のコードでOutlookの受信トレイフォルダのFolderオブジェクトが取得できたので、お次はサブフォルダー達を取得します。

Folderオブジェクトのサブフォルダーは、Foldersプロパティで取得することができます。

Folderオブジェクト.Folders

受信メールフォルダーとサブフォルダーを書き出してみる

では、上のコードにFolderオブジェクト内のサブフォルダーの件数分だけ、サブフォルダ名を書き出す処理を加えてみると、こんなコードになります。

Sub GetmailFolder()
Dim objOutlook As Outlook.Application
Dim myNamespace As Outlook.Namespace
Dim myInbox As Variant
Dim i As Long

Set objOutlook = New Outlook.Application
Set myNamespace = objOutlook.GetNamespace("MAPI")

Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)

Debug.Print myInbox

For i = 1 To myInbox.Folders.Count
    Debug.print myInbox.Folders(i)
Next i

End Sub
そしてこれを実行してみると…
outlook,サブフォルダー取得
この通り、受信トレイフォルダとそのサブフォルダ名が書き出せていますね

最後に

今回は、GetDefaultFolderメソッドを使って、受信メールフォルダのFolderオブジェクトを取得して、受信メールフォルダとそのサブフォルダー名を書き出す方法をご紹介しました。

今回の記事で、Outlookの受信メールフォルダと、そのサブフォルダにアクセスすることができましたので、次回はいよいよ、メールフォルダ内のメールをワークシートに書き出す方法をご紹介していきます!

メールの内容をエクセルシートに書き出すことができれば、顧客から来た問い合わせや、アンケートの回答等を簡単に一覧化できますし、後で顧客にQA表として送ったり、回答の分析に使ったりすることができますよ!

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

連載目次:エクセル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の受信メールをワークシートに書き出す方法

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