エクセルVBAでOutlookの受信メールをワークシートに書き出す方法


vba-outlook-outputmail

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

前回は、Outlookの受信メールフォルダと、そのサブフォルダーにアクセスしてフォルダ名を書き出す方法をご紹介しました。

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

今回はいよいよ、フォルダ内のメールの内容を、エクセルワークシートに書き出していく方法をご紹介します!

FolderオブジェクトのItemsプロパティでフォルダ内のメールを取得する

Itemsプロパティの記述方法

前回の記事で、GetDefaultFolderメソッドと引数olFolderInboxで、Outlookの受信メールフォルダーとそのサブフォルダーにアクセスすることができました。

今回の記事の目的である、フォルダの中のメールの内容を書き出すためには、フォルダ内のメールのデータにアクセスする必要がありますね。

そこで使うのが、GetDefaultFolderメソッドで取得したFolderオブジェクトの、Itemsプロパティ。

Itemsプロパティは、Outlookのデータフォルダ内にある、受信メールフォルダ内のメールデータをItemsオブジェクトとして取得できるメソッドです。

記述方法はコチラ。
Folderオブジェクト.Items(メールのインデックス番号)

MailItemオブジェクトのプロパティでメールの情報を取得

FoldersオブジェクトのItemsプロパティで取得できたItemsオブジェクトは、MailItemオブジェクトの形で取得できるので、MailItemオブジェクトのプロパティで、欲しい情報を取得していきます。

MailItemオブジェクトのプロパティは、下記記事でまとめていますのでそちらをご覧くださいね。

エクセルVBAでOutlookメールの下書きを作成・表示して送信前に内容チェックする
OutlookのMailItemオブジェクトのDisplayメソッドを使って、VBAで作成したOutlookのメール内容を、メール送信前にチェックする方法をご紹介しています。「VBAでメールを作成するのは便利だけど、内容をチェックしないでメール送信してしまうのは心配...」という方にお勧めです。

今回は、メールの送信日、件名、本文を取得してみましょう。

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

特定のフォルダからメールを取り出す

Itemメソッドで特定フォルダのFolderオブジェクトを取得する

上のコードは、受信メールフォルダ全体を対象にメールを取り出していますが、FoldersオブジェクトのItemメソッドを使って特定のフォルダにあるメールだけを対象にすることもできます。

さっきからFoldersだったりFolderだったり、ItemsだったりItemだったりややこしいですね。

Itemメソッドはこんな感じで記述します。

Foldersオブジェクト.Item(フォルダ名)

引数のフォルダ名は、文字型で指定してくださいね。

特定のフォルダからメールを取り出してワークシートに書き出すコード

では、ItemsオブジェクトとFoldersオブジェクトのItemメソッドを使って、受信メールフォルダからメールを取り出してみましょう。

まず、このような書き出し用のワークシートを準備しました。

vba,outlook,書き出し,ワークシート

書き出し対象のサブフォルダがコチラ。

3件のメールがありますね。

outlook,vba,受信メールフォルダ
そしてコードがこちら。

受信メールフォルダのサブフォルダ「SubFolder1」を10行目のItemメソッドで取得して、

For ~ Nextのループ分の中でitemsオブジェクトの中身を、フォルダ内にあるメールの件数分だけ取り出して、ワークシートに書き込む…というコードです。

実行結果

このコードを実行してみると…

この通り、SubFolder1フォルダ内のメールがワークシートに書き出されていますね

vba,Outlook,ワークシート書き出し

最後に

今回は、受信メールフォルダのサブフォルダ内にあるメールの内容を、ワークシートに書き出す方法をご紹介しました。

例えば、あるプロジェクトやイベントの出欠連絡などのメールの内容をワークシートに纏めないといけない!といった時にとっても便利ですよ。

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

連載目次:エクセル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。
業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁと日々夢見ております。

コメント