皆さん、こんにちは!今日は、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
また、ヘッダー行に「本文」を追加することもお忘れなく。
今すぐ解決したい!どうしたらいい?
いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」
あなたはこんな経験はありませんか?
✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦
平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。
LINEでメッセージを送れば即時解決!
すでに多くの方が私の公式LINEからお悩みを解決しています。
最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。
誰でも無料で使えますので、安心して使えます。
問題は先のばしにするほど深刻化します。
小さなエラーがデータ消失や重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。
あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。
ぜひ、あなたの悩みを私に解決させてください。
まとめ
以上、OutlookのVBAを使って、受信したメールをExcelに自動転記する方法をご紹介しました。最初は少し難しく感じるかもしれませんが、一度設定してしまえば、日々の業務が格段に効率化されます。ぜひ試してみてくださいね。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。
コメント