検索結果で選択しているメッセージが保存されているフォルダーを表示するマクロ


コメントで以下のようなご要望をいただきました。


過去のメールを探すときキーワードを使って検索しますが、一回で目当てのメールが見つからない場合でも、一連のやり取りの中での関連するメールが見つかることがあります。しかし、前後のメールや、一連のメールの最初から続けて読みたくても、検索にヒットしなかったメールは読めません。
こんなとき、検索結果の一覧で、選択しているメールのファイル/フォルダの場所に行ければ良いと思うのですが、そのような方法はありますでしょうか?


クイック検索の検索結果で選択されたメッセージが保存されているフォルダーを表示するためのマクロは以下のようなものになります。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub OpenFolderForSelected()
    Dim objFolder As Folder
    Set objFolder = ActiveExplorer.Selection(1).Parent
    objFolder.Display
End Sub

また、高度な検索で検索した場合は、ダブルクリックでメッセージを開き、以下のマクロを実行します。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub OpenFolderForOpenedItem()
    Dim objFolder As Folder
    Set objFolder = ActiveInspector.CurrentItem.Parent
    objFolder.Display
End Sub

なお、クイック検索の検索結果で単に見つかったメッセージと同じ件名のメッセージを探したいのであれば、そのメッセージを右クリックし、Outlook 2010 なら [関連アイテムの検索]-[このスレッドのメッセージ]、Outlook 2007 なら [すべて検索]-[関連メッセージ] をクリックしてください。

マクロの登録方法やメニューへの追加について

検索結果で選択しているメッセージが保存されているフォルダーを表示するマクロ」への2件のフィードバック

  1. 勝手な要望に対応して頂き、ありがとうございます。

    このマクロ、選択したメールがあるフォルダが一発で開けますが、そのフォルダで、そのメールが選択された状態にするようにはできませんか?(別ウィンドウでそのメールだけ開くのではなく)

    メールが選択されていないと、結局、そのフォルダの中を、受信日時などを頼りに探し回らなければならないので。

    • 結局、Outlook2010限定ですが、作っていただいたマクロを改造して、開いたフォルダで、検索されたメールが選択されるようにしました。

      Public Sub OpenFolderForSelected()
      Dim objFolder As Folder
      Dim objMail As MailItem
      Dim intWait as Integer
      Set objMail = ActiveExplorer.Selection(1)
      Set objFolder = ActiveExplorer.Selection(1).Parent
      objFolder.Display
      For intWait = 0 To 100
      DoEvents
      Next intWait
      ActiveExplorer.ClearSelection
      ActiveExplorer.AddToSelection objMail
      End Sub

      途中にあるForループは、objFolder.Displayメソッドでフォルダが開くのを待っています。本当なら何かのイベントを待つのかもしれませんが、やり方がわからなかったので、何とも稚拙ですがこのようにしました。

      OpenFolderForOpenedItemの方も同様です。

コメントを残す