K2さんの雑記
2015-07-21(Tue) [長年日記]■ Outlookで指定したMessage-IDのメールを検索して表示するマクロ(2)ちょっとだけ進んだ。 Public Sub SearchEmailTPZ() Dim oMailItem, oCurrentSelectedItem As MailItem Dim oFolder As Folder Dim sFilter, sMessageID As String Dim objSel '以下の""内に、該当メールのMessage-IDを書く sMessageID = "<1111111111111111@xxx.xxx.xxx>" Set oMailItem = SearchEmailByMessageID(sMessageID) If Not oMailItem Is Nothing Then Set oFolder = oMailItem.Parent Set ActiveExplorer.CurrentFolder = oFolder ' 以下のコードは不安定だが一応動作するようだ ' ただし、(1)フォルダがスレッド状態でないこと ' (2)2度同じマクロを実行する必要がある ' (3) 選択されたアイテムは、リストビュー上で表示 ' される位置までスクロールはされていない Set objSel = ActiveExplorer.Selection(1) ActiveExplorer.RemoveFromSelection objSel ActiveExplorer.AddToSelection oMailItem End If End Sub まず、選択動作等は、フォルダの表示形式をスレッドにしているとうまくいかないようだ。 また、フォルダを表示してからすぐにコードを実行するとうまく動かないようだ。上記のコードは2回動作させてやっと選択される。 選択されたメールは、リストビュー上で見える位置までスクロールされない。 以上のように、まだまだ問題点を抱えている。 メール選択の代わりに、フィルターを使用する方法も試してみた。これも、上記のように2回実行する必要があるが、スレッド表示状態でも動作する。なお、動かした後はフィルタを解除しないと正常動作に戻らないので注意。 また、試行中にビュー設定がおかしくなる場合があるので、それについても要注意。その場合は、別のフォルダのビュー設定をコピーしてくれば元に戻る。 sFilter = _ """http://schemas.microsoft.com/mapi/proptag/0x1035001E"" = " _ & " '" & sMessageID & "'" ActiveExplorer.CurrentView.filter = sFilter ActiveExplorer.CurrentView.Save ActiveExplorer.CurrentView.Apply 1965|09|
|
//
自己紹介
自己紹介
広告
計るだけダイエット
つっこみリスト
TrackBacks
日記仲間
な/
す/
ひ/
最近の日記
|