Outlook VBAでサブフォルダ内のメールを検索する方法をわかりやすく解説

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

みなさん、こんにちは。今日は、OutlookのVBAを使って、サブフォルダ内のメールを検索する方法についてお話しします。パソコンやスマホの操作がちょっと苦手な方でも大丈夫ですよ。一緒にやってみましょう。

スポンサーリンク

Outlook VBAとは?

Outlookのイメージ

Outlookのイメージ

まず、VBAって何?と思われるかもしれません。VBAは「Visual Basic for Applications」の略で、OutlookやExcelなどのMicrosoftのアプリケーションを自動化するためのプログラミング言語です。難しそうに聞こえるかもしれませんが、基本を押さえれば便利に使えますよ。

サブフォルダ内のメールを検索する手順

では、具体的にサブフォルダ内のメールを検索する方法を見ていきましょう。

  1. OutlookのVBAエディタを開くOutlookを起動し、「Alt」キーと「F11」キーを同時に押すと、VBAエディタが開きます。
  2. 新しいモジュールを作成するメニューの「挿入」から「標準モジュール」を選択します。
  3. 以下のコードを入力する
    vba
    Sub SearchEmailsInSubfolder()
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.Namespace
    Dim olFolder As Outlook.Folder
    Dim olSubfolder As Outlook.Folder
    Dim olMail As Outlook.MailItem
    Dim i As Integer

    ' Outlookアプリケーションを取得
    Set olApp = New Outlook.Application
    Set olNamespace = olApp.GetNamespace("MAPI")

    ' 受信トレイのフォルダを取得
    Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)

    ' サブフォルダの名前を指定
    On Error Resume Next
    Set olSubfolder = olFolder.Folders("サブフォルダ名")
    On Error GoTo 0

    If olSubfolder Is Nothing Then
    MsgBox "指定したサブフォルダが見つかりません。"
    Exit Sub
    End If

    ' サブフォルダ内のメールを表示
    i = 1
    For Each olMail In olSubfolder.Items
    If olMail.Class = olMail Then
    Debug.Print "メール " & i & ": " & olMail.Subject
    i = i + 1
    End If
    Next olMail

    MsgBox "サブフォルダ内のメールを検索しました。"
    End Sub

    このコードでは、指定したサブフォルダ内のメールの件名を表示しています。

  4. コードを実行するコードを入力したら、「F5」キーを押して実行します。すると、サブフォルダ内のメールの件名が表示されます。

よくある質問や疑問

サブフォルダが複数ある場合、すべてのサブフォルダ内のメールを検索できますか?

はい、可能です。その場合、再帰的にフォルダを探索するコードを使用します。具体的な方法は、以下のようになります。

vba
Sub SearchEmailsInAllSubfolders()
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.Namespace
Dim olFolder As Outlook.Folder

' Outlookアプリケーションを取得
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")

' 受信トレイのフォルダを取得
Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)

' サブフォルダ内のメールを再帰的に検索
ProcessFolder olFolder
End Sub

Sub ProcessFolder(CurrentFolder As Outlook.Folder)
Dim olSubfolder As Outlook.Folder
Dim olMail As Outlook.MailItem
Dim i As Integer

' フォルダ内のメールを表示
i = 1
For Each olMail In CurrentFolder.Items
If olMail.Class = olMail Then
Debug.Print "メール " & i & ": " & olMail.Subject
i = i + 1
End If
Next olMail

' サブフォルダがある場合、再帰的に処理
For Each olSubfolder In CurrentFolder.Folders
ProcessFolder olSubfolder
Next olSubfolder
End Sub

このコードでは、受信トレイ以下のすべてのサブフォルダ内のメールを検索し、件名を表示します。

メールの本文や送信者情報も取得できますか?

もちろん可能です。上記のコード内で、`olMail.Subject`の部分を`olMail.Body`や`olMail.SenderName`に変更することで、メールの本文や送信者情報を取得できます。

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

LINE公式

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

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

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

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

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

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

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

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

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

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

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

相談しに行く

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

まとめ

今回は、OutlookのVBAを使ってサブフォルダ内のメールを検索する方法をご紹介しました。最初は難しく感じるかもしれませんが、慣れてくるととても便利です。ぜひ試してみてください。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

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