【Outlook】不在通知に取引先名を差し込んで個別文面にするマクロ手法

【Outlook】不在通知に取引先名を差し込んで個別文面にするマクロ手法
🛡️ 超解決

Outlookの不在通知(自動返信)を取引先ごとに個別の文面にしたいとお考えではありませんか。既定の設定では同一の文面が全員に送信されますが、マクロを使えば差し込みが可能です。本記事では、OutlookのVBAマクロを利用して受信者の会社名や担当者名を自動で挿入する方法を解説します。

【要点】マクロで不在通知を個別化する3つのステップ

  • マクロの有効化と信頼設定: セキュリティセンターでマクロを許可します。
  • VBAコードの記述: 受信者のメールアドレスから会社名を抽出し文面に埋め込みます。
  • イベントハンドラの設定: 新規メール作成時に自動実行されるようApplication_ItemSendを使用します。

ADVERTISEMENT

なぜ個人別の不在通知が必要なのか

取引先ごとに異なる返信文面を送ることで、ビジネス上の信頼を高められます。例えば「株式会社A様向け」と「株式会社B様向け」で異なる担当者名や案件名を記載したいケースがあります。Outlookの標準機能では差し込み印刷のように動的な置換はできません。そこでVBAマクロを使って受信者情報から会社名や役職を自動抽出し、文面に差し込む方法が有効です。関連する機能として、Microsoft 365の自動応答ルールやExchange管理センターもありますが、個別制御にはマクロが便利です。またOneDriveに文面テンプレートを保存しておく方法も組み合わせられます。

お探しの解決策が見つからない場合は、こちらの「Teams/Outlookトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

マクロで取引先名を差し込む具体的な手順

ここではOutlookのVBAエディタを使用して、不在通知メールの件名や本文に取引先名を自動挿入する手順を説明します。事前にOutlookで「ファイル」→「オプション」→「アドイン」からVBAが利用できる環境を確認してください。

  1. VBAエディタを開く: Outlookで「Alt+F11」キーを押します。
  2. 信頼設定を変更: 「ツール」→「マクロ」→「セキュリティ」で「全てのマクロを有効にする」を選択します。注意点は後述します。
  3. 標準モジュールを追加: 左側のProjectエクスプローラーで「VBAProject」を右クリックし、「挿入」→「標準モジュール」を選びます。
  4. 以下のコードを貼り付け:
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
        Dim objMail As Outlook.MailItem
        Dim strRecipient As String
        Dim strCompany As String
        Dim strBody As String
        
        If TypeOf Item Is Outlook.MailItem Then
            Set objMail = Item
            ' 宛先から会社名を取得(例:@contoso.com → Contoso)
            strRecipient = objMail.To
            If InStr(strRecipient, "@") > 0 Then
                strCompany = Split(strRecipient, "@")(1)
                strCompany = Split(strCompany, ".")(0)
            End If
            ' 本文に差し込み(テンプレート内の【会社名】を置換)
            strBody = Replace(objMail.Body, "【会社名】", strCompany)
            objMail.Body = strBody
            objMail.Save
        End If
    End Sub
  5. プロジェクトを保存: Ctrl+Sで保存し、VBAエディタを閉じます。
  6. テスト送信: 新しいメールを作成し、本文に「【会社名】」と入力して送信します。マクロが自動的に会社名に置換されます。

この手順ではドメイン名から会社名を推定しています。実際の運用には、Exchange Onlineのアドレス帳から会社名を取得するなど高度な方法もあります。

落とし穴1: マクロのセキュリティ警告が表示される

マクロを有効にすると、ウイルス警告が出ることがあります。署名のないマクロは自動的に無効化される場合があります。解決策として、自己証明書を作成してコードに署名するか、信頼できる発行元として追加します。ただし組織のポリシーによっては制限されるため、IT管理者に確認してください。

落とし穴2: 会社名の取得に失敗する

メールアドレスにドメイン名がない場合や、個人用アドレスの場合は会社名を取得できません。その場合、差し込み文字列がそのまま残ります。対策として、取得できないときは「お客様」などのデフォルト文字列に置き換えるようコードを修正しましょう。

落とし穴3: 既存の不在設定と競合する

Outlookの自動返信設定([ファイル]→[自動応答])とマクロが同時に動作することがあります。自動応答が先に送信されるとマクロが発動しません。マクロは送信イベントで動作するため、通常のメール送信時のみ有効です。不在通知専用に使う場合は、自動応答をオフにし、メール返信ルールでマクロ経由のテンプレートを使用する方法が確実です。

手動とマクロの比較表

手動で個別文面を作成する方法と、マクロで自動化する方法を比較します。

項目 手動 VBAマクロ
手間 取引先ごとに個別作成が必要で時間がかかる 一度設定すれば自動で差し込みが完了する
精度 手作業による誤字脱字のリスクがある コード次第で正確だが、会社名取得ロジックに依存する
拡張性 担当者名や案件名を追加するとさらに手間が増える 複数のフィールドを差し込むコードに拡張できる

ADVERTISEMENT

よくある質問(FAQ)

Q1: マクロはOutlookのどのバージョンで動作しますか?

A: VBAマクロはクラシックOutlook(Windows版)で動作します。新しいOutlook(Windows版の新しいUI)やMac版OutlookではVBAがサポートされていないため、別の方法(Power Automateなど)を検討してください。

Q2: 会社名ではなく担当者名を差し込みたい場合はどうすればよいですか?

A: メールアドレスから名前を抽出するには、Exchangeのグローバルアドレス一覧を参照する必要があります。Application.Session.GetAddressEntryFromID などを使用して表示名を取得します。簡単な方法として、本文中の【担当者】などを手動で置き換えることもできます。

Q3: マクロが動作しなくなった場合のトラブルシューティングは?

A: まずOutlookを再起動します。それでも動作しない場合、VBAエディタでコードにエラーがないか確認します。セキュリティ設定でマクロが無効になっていないか、他のアドインとの競合がないか確認してください。また、イベントハンドラが正しく設定されているか(ThisOutlookSession など)を確認します。

まとめ

Outlookの不在通知に取引先名を差し込むマクロ手法を解説しました。VBAを使えば、手動では手間のかかる個別文面を自動化できます。ただし、セキュリティ設定や会社名の取得方法に注意が必要です。今回紹介したコードをベースに、自社の取引先情報に合わせてカスタマイズしてみてください。関連サービスとして、Exchange OnlineのトランスポートルールやPower Automateとの連携も便利です。


👥
Teams/Outlookトラブル完全解決データベース サインイン、接続エラー、メール送受信の不具合など、特有のトラブル解決策を網羅。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
🌐

超解決 リモートワーク研究班

Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。

SPONSORED