Outlook 5桁未満の数字が検索されたない対応 VBAでCSVに出力して検索

Outlookの検索は、5桁未満の場合は検索されません。
Microsoftのサイトでもそのように記載されています。

Outlook で検索する方法 - Microsoft サポート
Outlook で項目を検索するのに役立つ例を使用して、検索条件を絞り込む方法を示します。

今回は、上記の対応をVBAで行います。
作成するVBAは、受信トレイやそのサブフォルダをメールの件名をCSVに出力します。
CSVに出力されれば、検索は可能です。

OutlookでVBAの作成

Outlookを起動して、キーボードの「Alt」+「F11」をします。
コードを記載します。

Sub ExportMailDetailsFromAllFoldersToCSV()
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.NameSpace
    Dim olFolder As Outlook.MAPIFolder
    Dim filePath As String
    Dim outputFile As Object
    
    ' Outlookアプリケーションを取得
    Set olApp = Outlook.Application
    Set olNamespace = olApp.GetNamespace("MAPI")
    
    ' 受信トレイフォルダを取得
    Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)
    
    ' ファイルパスを指定
    filePath = "C:\Users\user\Desktop\OutlookMailDetails.csv"
    
    ' ファイルシステムオブジェクトを作成
    Set outputFile = CreateObject("Scripting.FileSystemObject").CreateTextFile(filePath, True)
    
    ' CSVのヘッダを書き込み
    outputFile.WriteLine "Folder,Subject,Sender,ReceivedTime"
    
    ' 受信トレイおよびすべてのサブフォルダを処理
    ProcessFolder olFolder, outputFile
    
    ' ファイルを閉じる
    outputFile.Close
    
    ' メッセージを表示
    MsgBox "すべてのフォルダのメール詳細のエクスポートが完了しました。"
End Sub

Sub ProcessFolder(ByVal olFolder As Outlook.MAPIFolder, ByVal outputFile As Object)
    Dim olItems As Outlook.Items
    Dim olMail As Outlook.MailItem
    Dim i As Long
    Dim subjectLine As String
    Dim senderName As String
    Dim receivedTime As String
    Dim subFolder As Outlook.MAPIFolder
    
    ' 現在のフォルダのアイテムを取得
    Set olItems = olFolder.Items
    
    ' フォルダ内の全てのアイテムをループ
    For i = 1 To olItems.Count
        ' アイテムがメールか確認
        If TypeOf olItems(i) Is Outlook.MailItem Then
            Set olMail = olItems(i)
            ' 件名、送信者、送信日時を取得してファイルに書き込み
            subjectLine = olMail.Subject
            senderName = olMail.senderName
            receivedTime = olMail.receivedTime
            outputFile.WriteLine olFolder.Name & "," & subjectLine & "," & senderName & "," & receivedTime
        End If
    Next i
    
    ' サブフォルダがある場合、再帰的に処理
    For Each subFolder In olFolder.Folders
        ProcessFolder subFolder, outputFile
    Next subFolder
End Sub

コードを実行すると、デスクトップ上にCSVファイルが表示されます。
5桁未満の数字が、件名に含まれていた場合は、CSVから検索できます。

まとめ

本日は、Outlookでメールの件名をVBAで一覧取得する対応でした。
本文内の内容も検索したい場合は、カスタマイズをお願いします。

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