[VBA]Outlookで返信時に、自動で宛名を入力する機能をつけてみた
発端
成果物
相手のメールアドレスで分岐して、敬称をつけるVBAが出来上がりました。
返信相手が複数いる場合、相手ごとにメールアドレスで「select case」で分岐して判定します。
また、相手のお名前も、Recipients(n).Name から取得しているため、アドレス帳で変な名前を付けていなければそのまま使えます。
アドレス帳の段階で敬称を付けている場合、敬称が2重になるので、分岐時に除外すべきでしょう。
とりあえず、今回テストで用意した分岐は3つです。
伏字になっているのは私の氏名やメールアドレス、相手の氏名やメールアドレスです。
1 「課長様」とつけることにしているメールアドレスへの返信
2 「相手がつけた敬称をそのままつけることにしている相手」への返信
補足:「お疲れ様」は「敬称」から除外してあります。そのままだと「様」がヒットしてしまうのです。
3 その他。登録していない相手すべてに対する敬称。
4 複数メンバーへの返信
下図のように、「、」区切りで表示します。
実装
WithEventsを使い、mailitemに対して「open」イベントでの処理を追加するのが肝です。
Microsoft Outlook Objects配下のVBAでは、mailitemのイベント処理をコーディングすることが出来無い為、このような対応になります。
VBEからみた全体像
下図の通り、クラスモジュールと、ThisOutlookSessionのコードに分かれています。
コード(ThisOutlookSession)
クラスインスタンスを作成し、ItemLoad時メールアイテムだった場合に、Openイベントを作りこんだクラスに処理を渡す処理です。
この処理が無いと、Openイベントに合わせて処理を実行できません。
Option Explicit
'クラスインスタンス作成
Dim AddSirName As New AddSirName
Private Sub Application_ItemLoad(ByVal Item As Object)
If (TypeOf Item Is MailItem) Then
Set AddSirName.myItem = Item
End If
End Sub
ここから先は
¥ 1,000
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?