皆さん、こんにちは!今日は、Outlookで受信したメールを自動的にExcelに転記する方法についてお話しします。毎回手動でメール内容をExcelにコピーするのは大変ですよね。そこで、VBA(Visual Basic for Applications)を使って、この作業を自動化してみましょう。
VBAとは何か?
まず、VBAについて簡単にご説明します。VBAは、Microsoft Office製品に組み込まれているプログラミング言語で、ExcelやOutlookなどの操作を自動化するために使用されます。これを使えば、日々の業務を効率化することが可能です。
Outlook VBAでメールをExcelに自動転記する手順
それでは、具体的な手順を見ていきましょう。
1. 開発タブを表示する
まず、Outlookのリボンに「開発」タブを表示させます。
- Outlookを起動します。
- 「ファイル」メニューから「オプション」を選択します。
- 「リボンのユーザー設定」をクリックし、右側の「開発」にチェックを入れます。
これで、リボンに「開発」タブが表示されるようになります。
2. VBAエディタを起動する
次に、VBAエディタを開きます。
- 「開発」タブをクリックします。
- 「Visual Basic」ボタンをクリックします。
これで、VBAエディタが起動します。
3. 参照設定を行う
OutlookからExcelを操作するために、参照設定を行います。
- VBAエディタのメニューから「ツール」→「参照設定」を選択します。
- 表示されたリストから「Microsoft Excel XX.X Object Library」にチェックを入れます。XX.Xはバージョン番号です。
4. コードを記述する
それでは、実際にコードを記述していきます。以下のコードは、Outlookで受信したメールの件名と受信日時をExcelに転記するものです。
vba
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim olApp As Outlook.Application
Dim olNs As Outlook.Namespace
Dim olMail As Outlook.MailItem
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim NextRow As Long
Dim arrEntryIDs() As String
Dim i As Integer
Set olApp = Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
arrEntryIDs = Split(EntryIDCollection, ",")
' Excelを起動または取得
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If xlApp Is Nothing Then
Set xlApp = CreateObject("Excel.Application")
End If
On Error GoTo 0
' Excelブックを開くか新規作成
On Error Resume Next
Set xlWB = xlApp.Workbooks("メール一覧.xlsx")
If xlWB Is Nothing Then
Set xlWB = xlApp.Workbooks.Add
xlWB.SaveAs "メール一覧.xlsx"
End If
On Error GoTo 0
Set xlSheet = xlWB.Sheets(1)
' ヘッダーを設定
If xlSheet.Cells(1, 1).Value = "" Then
xlSheet.Cells(1, 1).Value = "受信日時"
xlSheet.Cells(1, 2).Value = "件名"
End If
' 各メールを処理
For i = LBound(arrEntryIDs) To UBound(arrEntryIDs)
Set olMail = olNs.GetItemFromID(arrEntryIDs(i))
If olMail.Class = olMailItem Then
With xlSheet
NextRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(NextRow, 1).Value = olMail.ReceivedTime
.Cells(NextRow, 2).Value = olMail.Subject
End With
End If
Next i
' Excelを表示
xlApp.Visible = True
' 後片付け
Set olMail = Nothing
Set olNs = Nothing
Set olApp = Nothing
Set xlSheet = Nothing
Set xlWB = Nothing
Set xlApp = Nothing
End Sub
このコードを「ThisOutlookSession」に貼り付けます。これで、新しいメールを受信するたびに、メールの受信日時と件名がExcelに自動的に転記されるようになります。
よくある質問や疑問
Q1: このマクロは既存のExcelファイルに追記できますか?
はい、可能です。コード内の`xlWB.SaveAs “メール一覧.xlsx”`の部分を、既存のExcelファイルのパスに変更してください。
Q2: メールの本文も転記したいのですが、可能ですか?
はい、可能です。コード内の`With xlSheet`ブロックに以下の行を追加してください。
vba
.Cells(NextRow, 3).Value = olMail.Body
また、ヘッダー行に「本文」を追加することもお忘れなく。
まとめ
以上、OutlookのVBAを使って、受信したメールをExcelに自動転記する方法をご紹介しました。最初は少し難しく感じるかもしれませんが、一度設定してしまえば、日々の業務が格段に効率化されます。ぜひ試してみてくださいね。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。



コメント