VBA(Visual Basic for Applications)でメールを受信するには、通常、Outlookを操作する方法が一般的です。VBAからOutlookのオブジェクトモデルを使って、受信トレイのメールを取得できます。

以下に、Outlookの受信トレイからメールを読み取る基本的なサンプルコードを紹介します。
■ 前提
- Microsoft Outlook がインストールされている
- 「参照設定」で
Microsoft Outlook xx.x Object Library
にチェックを入れる(ツール
>参照設定
)
■ サンプルコード(受信トレイのメールを取得)
Sub 受信メールを読み取る()
Dim OutlookApp As Outlook.Application
Dim OutlookNamespace As Outlook.Namespace
Dim Folder As Outlook.MAPIFolder
Dim MailItem As Object
Dim i As Integer
' Outlookアプリケーションの起動
Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox) ' 受信トレイ
' 上から10件のメールを表示
For i = 1 To 10
Set MailItem = Folder.Items(i)
If TypeName(MailItem) = "MailItem" Then
Debug.Print "件名: " & MailItem.Subject
Debug.Print "送信者: " & MailItem.SenderName
Debug.Print "受信日時: " & MailItem.ReceivedTime
Debug.Print "本文: " & Left(MailItem.Body, 100) ' 本文の先頭100文字
Debug.Print "-----------------------------"
End If
Next i
' オブジェクト解放
Set MailItem = Nothing
Set Folder = Nothing
Set OutlookNamespace = Nothing
Set OutlookApp = Nothing
End Sub
■ 補足
MailItem.Body
:テキスト本文MailItem.HTMLBody
:HTML形式の本文(タグ付き)MailItem.Attachments
:添付ファイルのコレクション(取得可能)
■ 注意点
- Outlookのセキュリティ警告が出る場合があります(特に添付ファイルや送信操作時)
- 他のメールクライアント(Thunderbird、Gmailなど)には直接対応していません。IMAP/POP3などのプロトコルでアクセスするには、APIや別のライブラリが必要です(VBAでは困難)。
■ Outlookを利用しない方法について
VBAでOutlookを使わずにメールを受信する方法は、残念ながら非常に制限されています。理由は以下の通りです:
❗ VBA単体では「メール受信プロトコル(IMAP/POP3)」に直接アクセスできない
VBAには、POP3やIMAPなどのメール受信用プロトコルを操作する組み込み機能がありません。どうしても必要な場合は、別の手段をとりましょう。