VBAでOutlookのメールを日付指定で取得する方法【初心者向け解決ガイド】

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

みなさん、こんにちは!

今日は、VBAを使ってOutlookのメールを特定の日付範囲で取得する方法についてお話しします。これをマスターすれば、業務の効率化に大いに役立つこと間違いなしです。それでは、さっそく始めましょう!

スポンサーリンク

VBAとOutlookの連携とは?

まず、VBA(Visual Basic for Applications)とは、Microsoft Office製品に組み込まれているプログラミング言語です。これを使うことで、Outlookの操作を自動化できます。例えば、特定の期間に受信したメールを自動で抽出することも可能です。

日付を指定してメールを取得する手順

では、具体的に日付を指定してメールを取得する手順を見ていきましょう。

  1. OutlookとExcelの準備
  2. まず、OutlookとExcelを起動し、VBAエディタを開きます。Excelでは、Alt + F11キーでVBAエディタを起動できます。

  3. 新しいモジュールの作成
  4. VBAエディタ内で、新しいモジュールを挿入します。これにより、コードを記述する準備が整います。

  5. コードの記述
  6. 以下のコードをモジュールに貼り付けてください。このコードは、指定した期間内のメールを取得し、Excelに一覧として出力するものです。

    /* vbaコード */
    Sub ExportEmailsByDate()
    Dim OutlookApp As Object
    Dim OutlookNamespace As Object
    Dim Folder As Object
    Dim Items As Object
    Dim Item As Object
    Dim ExcelApp As Object
    Dim ExcelBook As Object
    Dim ExcelSheet As Object
    Dim StartDate As Date
    Dim EndDate As Date
    Dim Filter As String
    Dim Row As Integer

    ' 日付の入力を求める
    StartDate = InputBox("開始日を入力してください (yyyy/mm/dd):", "開始日入力")
    EndDate = InputBox("終了日を入力してください (yyyy/mm/dd):", "終了日入力")

    ' Outlookのオブジェクトを取得
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
    Set Folder = OutlookNamespace.GetDefaultFolder(6) ' 6は受信トレイを指します

    ' フィルタの作成
    Filter = "[ReceivedTime] >= '" & Format(StartDate, "yyyy/mm/dd HH:MM AMPM") & "' AND [ReceivedTime] <= '" & Format(EndDate, "yyyy/mm/dd HH:MM AMPM") & "'" ' フィルタを適用したアイテムの取得 Set Items = Folder.Items.Restrict(Filter) Items.Sort "[ReceivedTime]", True ' 受信日時でソート ' Excelのオブジェクトを作成 Set ExcelApp = CreateObject("Excel.Application") Set ExcelBook = ExcelApp.Workbooks.Add Set ExcelSheet = ExcelBook.Sheets(1) ' ヘッダーの作成 ExcelSheet.Cells(1, 1).Value = "受信日時" ExcelSheet.Cells(1, 2).Value = "送信者" ExcelSheet.Cells(1, 3).Value = "件名" ExcelSheet.Cells(1, 4).Value = "本文" ' メール情報の書き込み Row = 2 For Each Item In Items If Item.Class = 43 Then ' 43はMailItemを指します ExcelSheet.Cells(Row, 1).Value = Item.ReceivedTime ExcelSheet.Cells(Row, 2).Value = Item.SenderName ExcelSheet.Cells(Row, 3).Value = Item.Subject ExcelSheet.Cells(Row, 4).Value = Item.Body Row = Row + 1 End If Next Item ' Excelを表示 ExcelApp.Visible = True ' 後処理 Set Item = Nothing Set Items = Nothing Set Folder = Nothing Set OutlookNamespace = Nothing Set OutlookApp = Nothing Set ExcelSheet = Nothing Set ExcelBook = Nothing Set ExcelApp = Nothing End Sub

  7. コードの実行
  8. コードを貼り付けたら、F5キーを押して実行します。開始日と終了日を入力すると、その期間内のメールがExcelに一覧表示されます。

よくある質問や疑問

日付の形式はどのように入力すればよいですか?

日付は「yyyy/mm/dd」の形式で入力してください。例えば、2025年2月1日であれば「2025/02/01」となります。

特定のフォルダ内のメールを取得するにはどうすればよいですか?

受信トレイ以外のフォルダからメールを取得したい場合は、コード内のSet Folder = OutlookNamespace.GetDefaultFolder(6)の部分を、取得したいフォルダへのパスに変更してください。

まとめ

いかがでしたか?VBAを活用することで、Outlookのメールを効率的に管理できます。ぜひ、業務の効率化に役立ててください。ご視聴ありがとうございました!

🚨【緊急警報】あなたのIT悩み、今すぐ解決します!
「もう、パソコンやスマホでイライラしない」
あなたは知っていましたか? 平均的な人は、IT関連の問題で年間73時間も無駄にしているのです。それは、まるまる3日以上の時間です!
LINE公式

🎯でも、もうその時代は終わりました
私の今までにないLINE相談サービスで、あなたのパソコンやスマホの悩みを即座に解決します。
✅ 24時間365日対応
✅ 平均応答時間わずか2分
✅ AIと人間のエキスパートが連携してサポートします

💡なぜ、今すぐ行動すべきなのか?
時間は戻ってこないからです。 今この瞬間も、あなたの貴重な時間が失われています。問題を解決できなければ前には進めません。しかし、時間をかけすぎるのもバカらしいですよね。
いまなら基本無料で利用できますので、パソコンやスマホの悩みから解放された喜びを、今すぐ体験してください。
相談しに行く

コメント

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