連絡先のアドレスをすべてニックネーム キャッシュに登録するマクロ


Outlook には宛先を指定する際にアドレスの先頭の文字を入力するだけで名前の候補を表示する機能があります。
そして、名前の候補として表示されるためには、ニックネーム キャッシュというデータに登録される必要があるのですが、ニックネーム キャッシュにアドレス情報が登録されるのは以下のいずれかの場合です。

  • そのアドレスにメールを送信する
  • アドレスを宛先で名前解決する
  • アドレスを連絡先に登録する

そのため、たとえば別のPCから連絡先をインポートしたような場合、その連絡先のアドレスについては上記のいずれかの処理をしない限り、名前の候補には表示されないということになります。
また、何らかの理由でニックネーム キャッシュをクリアした場合も同様です。

そこで、連絡先のアドレスをすべてニックネーム キャッシュに登録し、名前の候補として出てくるようにするマクロを作ってみました。
マクロは以下の通りです。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub RegisterAllInContactsToNC()
    On Error Resume Next
    Dim fldContact As Folder
    Dim objContact 'As ContactItem
    Dim msgDummy As MailItem
    '
    Set fldContact = Session.GetDefaultFolder(olFolderContacts)
    Set msgDummy = Application.CreateItem(olMailItem)
    For Each objContact In fldContact.Items
        With objContact
            RegisterOneAddress msgDummy, .Email1DisplayName, .Email1Address
            RegisterOneAddress msgDummy, .Email2DisplayName, .Email2Address
            RegisterOneAddress msgDummy, .Email3DisplayName, .Email3Address
        End With
    Next
    msgDummy.Recipients.ResolveAll
    Set msgDummy = Nothing
End Sub
'
Private Sub RegisterOneAddress(msgItem As MailItem, strName As String, strAddr As String)
    Dim strNameAddr As String
    Dim objRecipient As Recipient
    If strName = "" Then Exit Sub
    strNameAddr = strName
    If InStr(strNameAddr, "@") = 0 Then
        strNameAddr = strNameAddr & "<" & strAddr & ">"
    End If
    msgItem.Recipients.Add strNameAddr
End Sub

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

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中