皆さん、こんにちは!
今日は、Outlookで受信したメールを自動的にExcelに記録する方法をご紹介します。これをマスターすれば、日々の業務効率が格段にアップしますよ!
Outlook VBAとは?
まず、Outlook VBAについて簡単に説明します。VBAとは、Visual Basic for Applicationsの略で、Microsoft Office製品に組み込まれているプログラミング言語です。これを使うことで、Outlookの操作を自動化し、Excelなど他のOffice製品と連携させることができます。
開発環境の準備
では、早速始めましょう。まずは、OutlookでVBAを使うための準備を行います。
1. 開発タブの表示
Outlookを起動し、以下の手順で開発タブを表示させます。
- 「ファイル」タブをクリック
- 「オプション」を選択
- 「リボンのユーザー設定」をクリック
- 右側の「開発」のチェックボックスにチェックを入れる
これで、リボンに「開発」タブが表示されます。
2. Visual Basic Editor(VBE)の起動
次に、VBEを起動します。
- 「開発」タブをクリック
- 左端の「Visual Basic」をクリック
これで、VBAの編集画面が開きます。
3. 参照設定の追加
OutlookからExcelを操作するためには、参照設定を行う必要があります。
- VBEのメニューから「ツール」をクリック
- 「参照設定」を選択
- 表示された一覧から「Microsoft Excel xx.x Object Library」にチェックを入れる
- 「OK」をクリック
これで、Outlook VBAからExcelを操作する準備が整いました。
メールをExcelに自動記録するVBAコード
それでは、実際にコードを書いていきましょう。以下のコードは、Outlookでメールを受信した際に、その内容を指定したExcelファイルに自動で追記するものです。
vbaコード
' Sleep関数を利用するためのAPI宣言
#If Win64 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
' メール受信時に実行されるイベントプロシージャ
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
' Outlookのネームスペースを取得
Dim myNameSpace As NameSpace
Set myNameSpace = GetNamespace("MAPI")
' 受信したメールアイテムを取得
Dim objMail As MailItem
Set objMail = myNameSpace.GetItemFromID(EntryIDCollection)
' Excel関連のオブジェクトを宣言
Dim objExcel As Object
Dim wb As Object
Dim ws As Object
Dim strFile As String
Dim i As Long
' 保存先のExcelファイルのパスを指定
strFile = "C:\Users\ユーザー名\Documents\メール記録.xlsx"
' Excelアプリケーションを起動
Set objExcel = CreateObject("Excel.Application")
' 非表示で起動
objExcel.Visible = False
' 指定したExcelファイルを開く
Set wb = objExcel.Workbooks.Open(strFile)
' 操作するシートを指定
Set ws = wb.Sheets("Sheet1")
' 最終行を取得し、次の入力行を決定
i = ws.Cells(ws.Rows.Count, 1).End(-4162).Row + 1
' メールの情報をExcelに書き込む
With objMail
ws.Cells(i, 1).Value = .ReceivedTime ' 受信日時
ws.Cells(i, 2).Value = .SenderName ' 送信者名
ws.Cells(i, 3).Value = .Subject ' 件名
ws.Cells(i, 4).Value = .Body ' 本文
End With
' Excelファイルを保存して閉じる
wb.Save
wb.Close False
objExcel.Quit
' オブジェクトを解放
Set ws = Nothing
Set wb = Nothing
Set objExcel = Nothing
Set objMail = Nothing
Set myNameSpace = Nothing
End Sub
このコードを、VBE内の「ThisOutlookSession」に貼り付けてください。これにより、Outlookで新しいメールを受信するたびに、指定したExcelファイルにその情報が自動的に追記されます。
よくある質問や疑問
Q1. Excelファイルが開いているときでも動作しますか?
はい、このコードはExcelファイルが開いている場合でも正常に動作します。ただし、他のユーザーと共有している場合は、同時編集に注意が必要です。
Q2. 特定のフォルダに受信したメールだけを記録することは可能ですか?
はい、可能です。`Application_NewMailEx`イベント内で、メールのフォルダをチェックし、特定のフォルダに受信したメールのみ処理するようにコードを修正できます。
今すぐ解決したい!どうしたらいい?
いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」
あなたはこんな経験はありませんか?
✅ ExcelやWordの使い方がわからない💦
✅ 大事な仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの動作が遅くて重要な連絡ができなかった💦
平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。
LINEでメッセージを送れば即時解決!
すでに多くの方が私の公式LINEからお悩みを解決しています。
最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。
誰でも無料で使えますので、安心して使えます。
問題は先のばしにすればするほど深刻化します。
小さなエラーがデータ消失や重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。
あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。
ぜひ、あなたの悩みを私に解決させてください。
まとめ
いかがでしたか?
Outlook VBAを活用することで、メールの情報を自動的にExcelに記録することができます。これにより、手作業での記録作業が不要になり、業務効率が大幅に向上します。ぜひ、試してみてくださいね!
コメント