【Outlook】メール送信時に「Cc追加忘れ」を自動チェックするマクロ

【Outlook】メール送信時に「Cc追加忘れ」を自動チェックするマクロ
🛡️ 超解決

Outlookでメールを送信するとき、Ccに必要な宛先を入れ忘れてしまう経験はありませんか。私はその失敗を防ぐために、送信時に自動でCcの内容をチェックするマクロを作成しました。この記事では、そのマクロの作り方と設定手順を詳しく解説します。

【要点】Cc追加忘れチェックマクロの作成と設定

  • マクロの役割: メール送信前にCcフィールドを確認し、指定した条件を満たさない場合は送信を中止して警告を表示します。
  • 作成手順: VBAエディタでコードを記述し、Outlookのイベントに紐づけます。
  • 注意点: マクロのセキュリティ設定やバージョンによる違いに気をつけてください。

ADVERTISEMENT

なぜCc追加忘れが起きるのかとマクロの仕組み

Ccの追加忘れは、急いでメールを作成するときや、同じようなメールを大量に送るときに発生しやすいです。特にビジネスシーンでは、上司や関連部署へのCcが必須であるケースも多いでしょう。手動で確認する方法では、送信後に気づくことが多く、再送信や謝罪の手間が生じます。

そこでマクロの出番です。OutlookのVBA(Visual Basic for Applications)を使って、送信ボタンを押したときに自動でコードが実行される仕組みを作ります。例えば、「Ccに特定のドメインのアドレスが含まれていない場合は警告を出す」といったルールを設定できます。このマクロは、Application_ItemSendイベントを利用して、メール送信前に割り込み処理を行います。

具体例として、Ccに@example.comのアドレスが必須の場面を考えてみましょう。マクロは送信時にすべてのCc受信者をチェックし、一つも該当しなければ「Ccに必須のアドレスがありません」というメッセージボックスを表示して送信をキャンセルします。また、Ccフィールド自体が空のケースも検出できます。

このマクロはOutlookのクライアントアプリケーションでのみ動作します。Web版のOutlookでは利用できませんのでご注意ください。

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

マクロの作成と設定手順

ここからは具体的な手順を説明します。Outlookのバージョンによってメニューの名称が異なる場合がありますが、基本的な流れは同じです。

  1. OutlookでVBAエディタを開く: Outlookを起動し、[Alt+F11]キーを押します。これでVBAエディタが開きます。
  2. プロジェクトエクスプローラで適切なモジュールを選択する: 左側のツリーで「Project1 (VbaProject.OTM)」の下にある「Microsoft Outlook Objects」を展開し、「ThisOutlookSession」をダブルクリックします。
  3. 以下のコードを貼り付ける: 開いたコードウインドウに、次のVBAコードをコピー&ペーストします。コードの説明は後述します。
  4. コードを保存してエディタを閉じる: [Ctrl+S]で保存し、VBAエディタを閉じます。
  5. マクロのセキュリティ設定を変更する: Outlookの「ファイル」→「オプション」→「セキュリティセンター」→「セキュリティセンターの設定」→「マクロの設定」で、「すべてのマクロを有効にする」を選択します。ただし、これは一時的な設定です。運用時は「署名付きマクロのみ有効にする」などを推奨します。
  6. Outlookを再起動する: 設定を反映させるため、Outlookを一度終了してから再度起動します。
  7. テストメールで動作確認: 新しいメールを作成し、Ccに指定のアドレスを入れずに送信してみてください。警告が表示されれば成功です。

以下がコードの例です。このコードは、Ccに@example.comのアドレスがない場合に警告します。必要に応じて条件を変更してください。

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim objMail As MailItem
    Dim strCc As String
    Dim blnFound As Boolean
    
    If TypeName(Item) = "MailItem" Then
        Set objMail = Item
        strCc = objMail.CC
        ' 例:Ccに @example.com が含まれているかチェック
        If InStr(1, strCc, "@example.com", vbTextCompare) = 0 Then
            ' 含まれていない場合
            If MsgBox("Ccに @example.com のアドレスが含まれていません。送信を中止しますか?", vbYesNo + vbExclamation, "Ccチェック") = vbYes Then
                Cancel = True
            End If
        End If
    End If
    Set objMail = Nothing
End Sub

注意点・失敗例

マクロがブロックされる場合の対処

Outlookのセキュリティ設定によって、マクロの実行がブロックされることがあります。特に、マクロが署名されていない場合は警告が出ます。対策として、一時的に「すべてのマクロを有効にする」に変更するか、証明書でコードに署名する必要があります。ただし、セキュリティリスクが高まるため、信頼できるコードのみ有効にしましょう。

コードのエラーで送信ができない

VBAコードに文法エラーがあると、Outlookが起動しなくなったり、送信時にエラーメッセージが表示されたりします。例えば、Set objMail = Itemの行で型が一致しないエラーが発生する場合があります。その場合は、Dim objMail As Objectに変更するか、If TypeName(Item) = "MailItem" Thenの条件を見直してください。また、コードを貼り付ける際に改行が崩れないように注意しましょう。

Outlookのバージョンによる動作の違い

クラシックOutlookと新しいOutlook(Windows 11版など)では、VBAのサポート状況が異なります。新しいOutlookではVBAマクロが動作しない場合があります。その場合は、クラシックOutlookを使用するか、別の方法(アドインなど)を検討しましょう。また、Microsoft 365の更新頻度が高いため、突然動作しなくなる可能性もあります。

ADVERTISEMENT

手動チェックとマクロ自動チェックの比較

方法 手間 確実性 カスタマイズ性
手動チェック 毎回目視で確認が必要 ヒューマンエラーが避けられない 人の判断に依存
マクロ自動チェック 一度設定すれば自動化 条件通りに漏れなくチェック コード編集で柔軟に対応可能
アドイン利用 インストールと設定が必要 製品に依存するが安定 提供される機能に限定

よくある質問(FAQ)

Q1: マクロを有効にしても動作しません。どうすればいいですか?

A: まず、コードを正しく貼り付けているか確認してください。次に、Outlookのセキュリティセンターで「すべてのマクロを有効にする」を選んで再起動します。それでも動かない場合は、VBAエディタの「デバッグ」メニューからコンパイルエラーがないか確認しましょう。

Q2: Ccに複数の条件を設定したい場合はどうすればいいですか?

A: コード内で複数のIf文を組み合わせるか、AndOrで条件を連結します。例えば、InStr(strCc, "@aaa.com") = 0 And InStr(strCc, "@bbb.com") = 0とすれば、両方のドメインがない場合に警告できます。

Q3: マクロを一時的に無効にする方法は?

A: VBAエディタで該当コードをコメントアウトするか、Outlookのセキュリティ設定を「すべてのマクロを無効にする」に変更します。また、Cancel = Trueの行を削除しても送信が中断されなくなります。

まとめ

この記事では、Outlookのマクロを使ってメール送信時にCcの追加忘れを自動チェックする方法を解説しました。手順は簡単で、一度設定すれば送信ミスを大幅に減らせます。ただし、マクロのセキュリティ設定やOutlookのバージョンに注意してください。関連サービスとして、Microsoft 365の管理センターでメールフロールールを設定する方法や、Exchange Onlineのトランスポートルールを利用する方法もあります。それらの方法と比較して、マクロはクライアント側で手軽に実装できる点がメリットです。ぜひお試しください。


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

ADVERTISEMENT

この記事の監修者
🌐

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

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

SPONSORED