コメントで以下のようなご要望をいただきました。
過去のメールを探すときキーワードを使って検索しますが、一回で目当てのメールが見つからない場合でも、一連のやり取りの中での関連するメールが見つかることがあります。しかし、前後のメールや、一連のメールの最初から続けて読みたくても、検索にヒットしなかったメールは読めません。
こんなとき、検索結果の一覧で、選択しているメールのファイル/フォルダの場所に行ければ良いと思うのですが、そのような方法はありますでしょうか?
クイック検索の検索結果で選択されたメッセージが保存されているフォルダーを表示するためのマクロは以下のようなものになります。
' ここをトリプルクリックでマクロ全体を選択できます。
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 なら [すべて検索]-[関連メッセージ] をクリックしてください。
勝手な要望に対応して頂き、ありがとうございます。
このマクロ、選択したメールがあるフォルダが一発で開けますが、そのフォルダで、そのメールが選択された状態にするようにはできませんか?(別ウィンドウでそのメールだけ開くのではなく)
メールが選択されていないと、結局、そのフォルダの中を、受信日時などを頼りに探し回らなければならないので。
結局、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の方も同様です。