みなさまこんにちは、ノグチです。
前回から、エクセルVBAでOutlookのメールフォルダにアクセスして、最終的にフォルダ内のメール内容をワークシートに書き出すまでを、順を追ってご紹介しています。
前回の記事では、このメールフォルダを操作するための第一歩として、Namespaceオブジェクトのご紹介と、GetNamespaceメソッドでOutlookのデータフォルダにアクセスする方法をご紹介しました。
今回は、GetNamespaceメソッドで取得したOutlookのデータフォルダのうち、Outlookの受信フォルダーと、そのサブフォルダーにアクセスして、フォルダ名を書き出す方法をご紹介していきます!
GetDefaultFolderメソッドでFolderオブジェクトを取得する
前回の記事で登場したNamespaceオブジェクトは、Outlookのデータフォルダにアクセスできるオブジェクトであるとご紹介しました。
ただこのNamespaceオブジェクトで取得できるデータフォルダには、メールだけでなく連絡先や予定表のデータフォルダも含まれています。
Outlookのデータフォルダから受信メールを取り出してワークシートに書き出すためには、まずはこのOutlookのデータフォルダ達の中から受信メールのデータフォルダにアクセスせねばなりません。
このOutlookのデータフォルダ達の中から目的のフォルダをFolderオブジェクトとして取得できるのが、NamespaceオブジェクトのGetDefaultFolderメソッドです。
GetDefaultFolderメソッドの記述方法
GetDdefaultFolderメソッドは、指定した種類(メール、予定表、連絡先など)の、既定のデータフォルダを操作するFolderオブジェクトを取得することができるメソッドです。
記述方法はコチラ。
この引数に指定できるフォルダーの種類には、たとえばこんなものがあります。
指定値 | 内容 |
---|---|
olFolderInbox | 受信トレイフォルダー(メール) |
olFolderOutbox | 送信トレイフォルダー(メール) |
olFolderCalendar | 予定表フォルダー |
olFolderContacts | 連絡先フォルダー |
olFolderTasks | タスクフォルダー |
受信メールフォルダのFolderオブジェクトを生成するコード
では実際にOutlookの受信メールフォルダーと、そのサブフォルダーにアクセスしてフォルダ名を書き出してみましょう。
例えば、Outlookの受信メールフォルダ構成がこうなっているとします。
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オブジェクト内のサブフォルダーの件数分だけ、サブフォルダ名を書き出す処理を加えてみると、こんなコードになります。
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
最後に
今回は、GetDefaultFolderメソッドを使って、受信メールフォルダのFolderオブジェクトを取得して、受信メールフォルダとそのサブフォルダー名を書き出す方法をご紹介しました。
今回の記事で、Outlookの受信メールフォルダと、そのサブフォルダにアクセスすることができましたので、次回はいよいよ、メールフォルダ内のメールをワークシートに書き出す方法をご紹介していきます!
メールの内容をエクセルシートに書き出すことができれば、顧客から来た問い合わせや、アンケートの回答等を簡単に一覧化できますし、後で顧客にQA表として送ったり、回答の分析に使ったりすることができますよ!
それでは、最後までお読みいただきありがとうございました!
連載目次:エクセルVBAでOutlookを操作してみよう!
エクセルVBAでOutlookのメール作成、送信などの操作をする方法をご紹介しています。メーラーとして便利なOutlookですが、VBAと組み合わせて更に便利に使ってしまいましょう。
- 【エクセルVBA】エクセルVBAでOutlookを操作しよう!参照設定とOutlookアプリケーションオブジェクトの取得
- 【エクセルVBA】Outlookでメールを作成・送信する方法
- 【エクセルVBA】エクセルシートに一覧化された複数の連絡先に本文を変えつつOutlookでメールを一括送信する方法
- エクセルVBAでOutlookメールの下書きを作成・表示して送信前に内容チェックする
- エクセルVBAでOutlookの連絡先を登録する方法
- 【エクセルVBA】GetNamespaceメソッドでOutlookのデータフォルダにアクセスする方法
- エクセルVBAでOutlookの受信メールフォルダとサブフォルダ名を書き出す方法
- エクセルVBAでOutlookの受信メールをワークシートに書き出す方法