VBA メール受信

未分類

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などのメール受信用プロトコルを操作する組み込み機能がありません。どうしても必要な場合は、別の手段をとりましょう。


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