当サイトの記事にはプロモーションが含まれています。

Outlook VBAで特定の件名のメールを自動処理する方法

パソコンパソコン・スマホ教室
スポンサーリンク

皆さん、こんにちは。今回は、Outlookで特定の件名を持つメールを自動的に処理する方法をご紹介します。例えば、毎日届く「注文確認」という件名のメールを自動でExcelに記録できたら便利ですよね。この動画では、初心者の方でも簡単に理解できるよう、ステップバイステップで解説していきます。

スポンサーリンク

Outlook VBAとは?

Outlookのイメージ

Outlookのイメージ

まず、Outlook VBAについて簡単に説明します。VBA(Visual Basic for Applications)は、Microsoft Office製品に組み込まれているプログラミング言語で、Outlookの操作を自動化することができます。これにより、日々の業務を効率化することが可能です。

特定の件名のメールを自動処理する手順

それでは、特定の件名を持つメールを自動的に処理する手順を見ていきましょう。今回は、件名が「注文確認」のメールを受信した際に、その内容をExcelファイルに保存する方法を紹介します。

1. OutlookでVBAを使用する準備

まず、OutlookでVBAを使用するための準備を行います。以下の手順で進めてください。

  1. Outlookを開き、キーボードの「Alt」キーを押しながら「F11」キーを押して、VBAエディタを起動します。
  2. VBAエディタのメニューから「ツール」→「参照設定」を選択します。
  3. 表示された参照設定の一覧から「Microsoft Excel xx.x Object Library」にチェックを入れ、「OK」をクリックします。

これで、OutlookからExcelを操作する準備が整いました。

2. マクロの作成

次に、特定の件名のメールを受信した際に自動的に処理を行うマクロを作成します。以下のコードをVBAエディタに入力してください。

vba
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim arrEntryIDs() As String
Dim EntryID As Variant
Dim mailItem As Outlook.MailItem
Dim ns As Outlook.NameSpace
Set ns = Application.GetNamespace("MAPI")

arrEntryIDs = Split(EntryIDCollection, ",")
For Each EntryID In arrEntryIDs
Set mailItem = ns.GetItemFromID(EntryID)
If mailItem.Subject = "注文確認" Then
SaveMailToExcel mailItem
End If
Next EntryID
End Sub

Private Sub SaveMailToExcel(mailItem As Outlook.MailItem)
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Dim lastRow As Long
Dim orderNumber As String
Dim customerName As String
Dim orderDate As String

' Excelを起動
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set xlApp = CreateObject("Excel.Application")
End If
On Error GoTo 0

' Excelファイルを開く
Set xlBook = xlApp.Workbooks.Open("C:pathtoyourfile.xlsx")
Set xlSheet = xlBook.Sheets(1)

' 最終行を取得
lastRow = xlSheet.Cells(xlSheet.Rows.Count, 1).End(-4162).Row + 1

' メール本文から情報を抽出(例として)
orderNumber = ExtractData(mailItem.Body, "注文番号")
customerName = ExtractData(mailItem.Body, "顧客名")
orderDate = mailItem.ReceivedTime

' Excelに書き込む
xlSheet.Cells(lastRow, 1).Value = orderDate
xlSheet.Cells(lastRow, 2).Value = orderNumber
xlSheet.Cells(lastRow, 3).Value = customerName

' 保存して閉じる
xlBook.Close True
xlApp.Quit
End Sub

Private Function ExtractData(body As String, label As String) As String
Dim startPos As Long
Dim endPos As Long
startPos = InStr(body, label)
If startPos > 0 Then
startPos = startPos + Len(label)
endPos = InStr(startPos, body, vbCrLf)
If endPos > 0 Then
ExtractData = Mid(body, startPos, endPos - startPos)
Else
ExtractData = Mid(body, startPos)
End If
Else
ExtractData = ""
End If
End Function

このコードは、件名が「注文確認」のメールを受信すると、自動的にExcelファイルを開き、メールの受信日時、注文番号、顧客名を指定したExcelファイルに追記します。メール本文から必要な情報を抽出するために、`ExtractData`関数を使用しています。

3. マクロの有効化とセキュリティ設定

作成したマクロを有効にするためには、Outlookのセキュリティ設定を変更する必要があります。以下の手順で設定を行ってください。

  1. Outlookの「ファイル」タブをクリックします。
  2. 「オプション」を選択し、表示されたウィンドウで「セキュリティセンター」をクリックします。
  3. 「セキュリティセンターの設定」ボタンをクリックし、「マクロの設定」を選択します。
  4. 「警告を表示してすべてのマクロを無効にする」を選択し、「OK」をクリックします。

これで、マクロが有効になり、特定の件名のメールを受信した際に自動的に処理が行われるようになります。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

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