仕事でOutlookを使ってメールを送ることが多い。
届いたメールに返信すると、宛先がアドレス表記のままや、向こうが登録している名前のみ(呼び捨て状態)になってしまい困る。
毎回アドレス帳から入れなおすのも無駄だし…いい方法無いかな?
Outlooで受信したメールに返信ボタンを押すと
その1:相手が登録している名前(呼び捨て)で表示される
その2:メールアドレスのまま表示される
このままでも勿論問題はありませんが、
会社によっては宛先表示にも敬称や役職をつけるように指示される場合があります。
Outlookで宛先に役職や敬称をつけないと相手に見えるのか?
- 宛先(メールアドレスを入力する欄)に敬称や役職をつけると、受した相手にもみえるんですか?
-
見えます。
送信した際の表示されている内容で届きます。
理想の表示方法
理想としては、次のように「敬称」(あれば役職)を表示させることがベストです。
宛先に敬称や役職名を付ける場合は、
手順1)アドレス帳に登録する
手順2)宛先からアドレス帳を使って追加しなおす
必要があります
メールの受信者に不快な思いをさせないよう、アドレス帳の表示名に役職・敬称をつけて登録しましょう。
それではここからが本題。
ボタン一つで返信メールの宛先を、電話帳に登録した表示名に変更してくれるマクロをご紹介します。
なお、今回紹介させていただくマクロはOutlook研究所さんが作成されたものです。
Outlookに開発のタブがある場合はこのステップはスキップでOKです
開発タブがない場合は、タブの何もない箇所で右クリックしてリボンのユーザー設定を開きます。
開発の欄にチェックが入っていないと思うので、チェックをいれます
開発タブからVisualBasicをクリックするかAlt+F11で立ち上げます
Project1 の中の
Microsoft Office Outlook Objectsの中にある
ThisOutlookSessionをダブルクリックすると、右側にウィンドウが表示されるので、こちらにプログラムのコードを貼り付けます
下記コードをコピーして貼り付けます
なお、今回紹介させていただくマクロはOutlook研究所さんが作成されたものです。
Private Function FindContactByAddress(strAddress As String)
Dim objContacts 'As Folder
Dim objContact As ContactItem
'
Set objContacts = Application.Session.GetDefaultFolder(olFolderContacts)
Set objContact = objContacts.Items.Find("[Email1Address] = '" & strAddress _
& "' or [Email2Address] = '" & strAddress _
& "' or [Email3Address] = '" & strAddress & "'")
Set FindContactByAddress = objContact
End Function
' 返信先の表示名を変更。
'
Public Sub ReplyWithAddressBookName()
Dim objReply As MailItem
Dim objRecip As Recipient
Dim objContact As ContactItem
Dim objAddrList As AddressList
Dim i As Integer
Dim objAddrEntry As AddressEntry
Dim bFound As Boolean
Dim cRecips As Integer
Dim colAddress() As String
Dim colName() As String
Dim colType() As Integer
'
Set objReply = ActiveExplorer.Selection.Item(1).ReplyAll
cRecips = objReply.Recipients.Count
ReDim colAddress(cRecips) As String
ReDim colName(cRecips) As String
ReDim colType(cRecips) As Integer
For i = cRecips To 1 Step -1
Set objRecip = objReply.Recipients.Item(i)
colAddress(i) = objRecip.Address
colName(i) = objRecip.Name
colType(i) = objRecip.Type
objReply.Recipients.Remove i
Next
'
For i = 1 To cRecips
Set objRecip = Nothing
For Each objAddrList In Session.AddressLists
If objAddrList.AddressListType = olOutlookAddressList Then ' Outlook 2003 の場合はこの行をコメントアウトし、下の1行を有効にする
'If objAddrList.Name = "連絡先" Then
For Each objAddrEntry In objAddrList.AddressEntries
If objAddrEntry.Address = colAddress(i) Then
Set objRecip = objReply.Recipients.Add(colAddress(i))
Set objRecip.AddressEntry = objAddrEntry
objRecip.Type = colType(i)
Exit For
End If
Next
If Not objRecip Is Nothing Then
Exit For
End If
End If
Next
If objRecip Is Nothing Then
Set objRecip = objReply.Recipients.Add(colName(i) & "<" & colAddress(i) & ">")
objRecip.Type = colType(i)
End If
Next
objReply.Display
End Sub
受信トレイの閲覧ウィンドウで、返信したいメールを選択中に開発からマクロを選択して実行します
今回は閲覧ウィンドウからの返信ですが、本家のサイトには受信メールをダブルクリックして開いたポップアップウィンドウからの返信用マクロもあります
いちいち開発からマクロを実行することが面倒なひとは、次の章で紹介する「クイックツールバーにマクロを登録する方法」を確認してください。
Outlookのクイックツールバーにマクロのショートカットを登録する
折角マクロを登録して便利な環境になっても、いちいち開発タブから実行するのは面倒ですよね。
そこで当ブログでは、クイックツールバーにマクロをショートカットする方法を推奨します。
クイックツールバーの何もない箇所で右クリックし、クイックアクセスツールバーのユーザー設定を選択します
もしクイックツールバーが表示されていない場合は、リボンの何もない箇所で右クリックしクイックアクセスツールバーを表示させて下さい
コマンドの選択からマクロを選びます
追加したいマクロを選択し、追加をクリック
変更を押します
アイコンや名前を変更してOKで終了