[VBA]Outlookで返信時に、自動で宛名を入力する機能をつけてみた

発端

成果物

相手のメールアドレスで分岐して、敬称をつけるVBAが出来上がりました。
返信相手が複数いる場合、相手ごとにメールアドレスで「select case」で分岐して判定します。
また、相手のお名前も、Recipients(n).Name から取得しているため、アドレス帳で変な名前を付けていなければそのまま使えます。
アドレス帳の段階で敬称を付けている場合、敬称が2重になるので、分岐時に除外すべきでしょう。
とりあえず、今回テストで用意した分岐は3つです。
伏字になっているのは私の氏名やメールアドレス、相手の氏名やメールアドレスです。

1 「課長様」とつけることにしているメールアドレスへの返信

画像5

2 「相手がつけた敬称をそのままつけることにしている相手」への返信

画像5

補足:「お疲れ様」は「敬称」から除外してあります。そのままだと「様」がヒットしてしまうのです。

3 その他。登録していない相手すべてに対する敬称。

画像5

4 複数メンバーへの返信

下図のように、「、」区切りで表示します。

画像5

実装

WithEventsを使い、mailitemに対して「open」イベントでの処理を追加するのが肝です。
Microsoft Outlook Objects配下のVBAでは、mailitemのイベント処理をコーディングすることが出来無い為、このような対応になります。

VBEからみた全体像

下図の通り、クラスモジュールと、ThisOutlookSessionのコードに分かれています。

画像4

コード(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

ここから先は

2,598字

¥ 1,000

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?