皆さん、こんにちは。今回は、Outlookで特定の件名を持つメールを自動的に処理する方法をご紹介します。例えば、毎日届く「注文確認」という件名のメールを自動でExcelに記録できたら便利ですよね。この動画では、初心者の方でも簡単に理解できるよう、ステップバイステップで解説していきます。
Outlook VBAとは?
まず、Outlook VBAについて簡単に説明します。VBA(Visual Basic for Applications)は、Microsoft Office製品に組み込まれているプログラミング言語で、Outlookの操作を自動化することができます。これにより、日々の業務を効率化することが可能です。
特定の件名のメールを自動処理する手順
それでは、特定の件名を持つメールを自動的に処理する手順を見ていきましょう。今回は、件名が「注文確認」のメールを受信した際に、その内容をExcelファイルに保存する方法を紹介します。
1. OutlookでVBAを使用する準備
まず、OutlookでVBAを使用するための準備を行います。以下の手順で進めてください。
- Outlookを開き、キーボードの「Alt」キーを押しながら「F11」キーを押して、VBAエディタを起動します。
- VBAエディタのメニューから「ツール」→「参照設定」を選択します。
- 表示された参照設定の一覧から「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のセキュリティ設定を変更する必要があります。以下の手順で設定を行ってください。
- Outlookの「ファイル」タブをクリックします。
- 「オプション」を選択し、表示されたウィンドウで「セキュリティセンター」をクリックします。
- 「セキュリティセンターの設定」ボタンをクリックし、「マクロの設定」を選択します。
- 「警告を表示してすべてのマクロを無効にする」を選択し、「OK」をクリックします。
これで、マクロが有効になり、特定の件名のメールを受信した際に自動的に処理が行われるようになります。



コメント