Outlook VBAでメールをExcelに自動出力する方法

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

皆さん、こんにちは!

今日は、Outlookで受信したメールを自動的にExcelに記録する方法をご紹介します。これをマスターすれば、日々の業務効率が格段にアップしますよ!

スポンサーリンク

Outlook VBAとは?

まず、Outlook VBAについて簡単に説明します。VBAとは、Visual Basic for Applicationsの略で、Microsoft Office製品に組み込まれているプログラミング言語です。これを使うことで、Outlookの操作を自動化し、Excelなど他のOffice製品と連携させることができます。

開発環境の準備

では、早速始めましょう。まずは、OutlookでVBAを使うための準備を行います。

1. 開発タブの表示

Outlookを起動し、以下の手順で開発タブを表示させます。

  1. 「ファイル」タブをクリック
  2. 「オプション」を選択
  3. 「リボンのユーザー設定」をクリック
  4. 右側の「開発」のチェックボックスにチェックを入れる

これで、リボンに「開発」タブが表示されます。

2. Visual Basic Editor(VBE)の起動

次に、VBEを起動します。

  1. 「開発」タブをクリック
  2. 左端の「Visual Basic」をクリック

これで、VBAの編集画面が開きます。

3. 参照設定の追加

OutlookからExcelを操作するためには、参照設定を行う必要があります。

  1. VBEのメニューから「ツール」をクリック
  2. 「参照設定」を選択
  3. 表示された一覧から「Microsoft Excel xx.x Object Library」にチェックを入れる
  4. 「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`イベント内で、メールのフォルダをチェックし、特定のフォルダに受信したメールのみ処理するようにコードを修正できます。

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 大事な仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの動作が遅くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにすればするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

ぜひ、あなたの悩みを私に解決させてください。

相談しに行く

まとめ

いかがでしたか?

Outlook VBAを活用することで、メールの情報を自動的にExcelに記録することができます。これにより、手作業での記録作業が不要になり、業務効率が大幅に向上します。ぜひ、試してみてくださいね!

コメント

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