皆さん、こんにちは!今日は、ExcelのVBAを使ってOutlookのメール本文を取得する方法をご紹介します。パソコンやスマホがちょっと苦手な方でも大丈夫。ゆっくり一緒に学んでいきましょう。
はじめにVBAとOutlookの連携とは?
まず、VBAとは「Visual Basic for Applications」の略で、ExcelなどのOffice製品を自動化するためのプログラミング言語です。これを使うと、OutlookのメールをExcelに取り込むといった作業が自動でできるようになります。
準備Excelでの設定
最初に、Excelで以下の設定を行います。
- 開発タブの表示
Excelを開き、上部の「ファイル」→「オプション」→「リボンのユーザー設定」をクリックし、「開発」のチェックボックスにチェックを入れて「OK」を押します。 - 参照設定
「開発」タブの「Visual Basic」をクリックしてVBAエディタを開きます。上部の「ツール」→「参照設定」を選び、「Microsoft Outlook xx.x Object Library」にチェックを入れて「OK」を押します。
基本的なコードの書き方
では、実際にコードを書いてみましょう。以下の手順で進めます。
- Outlookアプリケーションの起動Outlookを操作するためのオブジェクトを作成します。
- 受信トレイの取得
Outlookの受信トレイフォルダを指定します。 - メールアイテムの取得
受信トレイ内のメールを順番に取り出します。 - メール本文の表示
各メールの本文を表示します。
以下がそのサンプルコードです。
VBコード
Sub GetOutlookMailBody()
' Outlookアプリケーションを起動
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
' 名前空間を取得
Dim olNamespace As Outlook.Namespace
Set olNamespace = olApp.GetNamespace("MAPI")
' 受信トレイフォルダを取得
Dim olFolder As Outlook.Folder
Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)
' 受信トレイ内のアイテムを取得
Dim olItems As Outlook.Items
Set olItems = olFolder.Items
' 各メールアイテムを処理
Dim olMail As Outlook.MailItem
Dim i As Integer
For i = 1 To olItems.Count
' メールアイテムか確認
If TypeName(olItems(i)) = "MailItem" Then
Set olMail = olItems(i)
' メールの件名と本文を表示
Debug.Print "件名: " & olMail.Subject
Debug.Print "本文: " & olMail.Body
End If
Next i
End Sub
このコードを実行すると、受信トレイ内の各メールの件名と本文が表示されます。ただし、メールの数が多いと時間がかかる場合がありますので、ご注意ください。
特定のフォルダや新着メールの取得
受信トレイ以外のフォルダや、新着メールのみを取得したい場合もあります。その場合は、以下のようにコードを修正します。
特定のフォルダを指定する場合
vb
' 受信トレイ内の特定のサブフォルダを取得
Set olFolder = olFolder.Folders("サブフォルダ名")
新着メールのみを取得する場合
vb
' 受信トレイ内のアイテムを取得し、受信日時でソート
Set olItems = olFolder.Items
olItems.Sort "[ReceivedTime]", True
' 最新の10件のメールを取得
For i = 1 To 10
' メールアイテムか確認
If TypeName(olItems(i)) = "MailItem" Then
Set olMail = olItems(i)
' メールの件名と本文を表示
Debug.Print "件名: " & olMail.Subject
Debug.Print "本文: " & olMail.Body
End If
Next i
これにより、最新の10件のメールの件名と本文が表示されます。
よくある質問や疑問
Q1: コードを実行してもエラーが出ます。どうすればいいですか?
まず、参照設定が正しく行われているか確認してください。「Microsoft Outlook xx.x Object Library」にチェックが入っていることを確認しましょう。
Q2: 特定の送信者からのメールだけを取得することはできますか?
はい、可能です。以下のように、送信者のアドレスを条件に追加してください。
vb
If olMail.SenderEmailAddress = "example@example.com" Then
' メールの処理
End If
まとめ
今回は、VBAを使ってOutlookのメール本文を取得する方法をご紹介しました。最初は難しく感じるかもしれませんが、慣れてくるととても便利です。ぜひ試してみてくださいね。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。


コメント