フォルダを開いたときに最新のメールを選択するマクロ


コメントにて以下のようなご質問をいただきました。


Outlook2010では受信フォルダ内で選択中のメール行が保持されていますが、これをフォルダを開いたときに常に最新のメールが選択されているようにすることは可能でしょうか?



Outlook ではフォルダーごとに最後に選択したメールを保持する動作となっており、これを設定で変更することはできません。
マクロで最新のメールを選択させるようにすることも可能なのですが、ちょっとマクロが複雑になります。
記述方法は以下の通りです。

  1. Visual Basic Editor を起動します。
  2. 左ペインの [Project1 (VbaProject.OTM)] を右クリックし、[挿入]-[クラス モジュール] をクリックします。
  3. 左ペインの下側のプロパティで、追加したクラスの [(オブジェクト名)] に ExpWrap と入力します。
  4. 右ペインのコードウィンドウに、以下のコードを入力します。

    ' ここをトリプルクリックでマクロ全体を選択できます。
    ' ExpWrap - Explorer Wrapper Class
    Public WithEvents myExplorer As Explorer
    '
    Private Sub myExplorer_FolderSwitch()
        On Error Resume Next
        Dim objSel
        Dim colItems As Items
        If myExplorer.CurrentFolder.DefaultItemType = olMailItem Then
            DoEvents
            Set objSel = myExplorer.Selection(1)
            myExplorer.RemoveFromSelection objSel
            Set colItems = myExplorer.CurrentFolder.Items
            colItems.Sort "受信日時", True
            myExplorer.AddToSelection colItems.Item(1)
        End If
    End Sub

  5. 左ペインの [ThisOutlookSession] をダブルクリックします。
  6. 右ペインのコードウィンドウに、以下のコードを入力します。

    ' ここをトリプルクリックでマクロ全体を選択できます。
    Dim WithEvents myExplorers As Explorers
    Dim colExp As Collection
    ' 起動時のイベント
    Private Sub Application_Startup()
        Set myExplorers = Application.Explorers
        Set colExp = New Collection
    End Sub
    ' フォルダーのウィンドウが新規に開かれた際のイベント
    Private Sub myExplorers_NewExplorer(ByVal Explorer As Explorer)
        Dim newExpWrap As New ExpWrap
        Set newExpWrap.myExplorer = Explorer
        colExp.Add newExpWrap
    End Sub

  7. Outlook を再起動します。

なお、このマクロを組み込んでも、スレッド表示を行っているフォルダーでは最新のメールが選択されません。
また、タイミングによってはうまく最新のメールが選択できない場合もあるようです。

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

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中