single.php

Outlook 2016で仕分けルールでスクリプトを実行する

Microsoft Outlookで仕分けでVBAでカスタマイズしたルールを実行させる手順です。VisualBasicなどの言語の知識が多少必要になりますが、テンプレで用意されていない仕分けルールを実現できるようになります。

この記事は、収束させている他ブログサイトの記事をリファインして再投稿してます。

Outlookで仕分けする際の注意

会社でOutlookを利用している場合には、Exchange Serverなどをメールサーバーとして利用しているケースがあります。その場合にメールクライアントとしてOutlookを接続して、仕分けルールを使っている場合には転送やリダイレクト処理はサーバー側で処理されます。

しかし、今回のようにOutlook側でVBAを実行する場合にはOutlookを常に起動しておく必要があるので注意してください。

開発タブの表示

必ず必要と言う訳ではありませんが、VBAを表示するのにキーボードショートカット(Alt+F11)が使い辛い場合には、開発タブを表示しておいた方が楽です。

  1. Outlookの[ファイル|オプション]メニューを選択します。
  2. [Outlookのオプション]画面で左側の一覧から[リボンのユーザー設定]を選択します。
  3. 表示された[リボンをカスタマイズします]画面の右側一覧から[開発]をチェックします。
  4. [OK]ボタンをクリックして[Outlookのオプション]画面を閉じます。
  5. Outlookに[開発]タブが追加されます。

VBAでカスタムルールの準備

Visual Basic for Applicationsで仕分けするルールを作成していきます。今回はサンプルとして、受信トレイに配信されたメールを転送するスクリプトを作っていきます。

  1. Outlookを起動して、VBAを表示します。(開発タブで[Visual Basic]ボタンをクリックするか、キーボードでAlt+F11キーをタイプします)
  2. [Microsoft Visual Basic for Applications]画面が表示されます。
  3. [プロジェクト]画面をマウスの右ボタンでクリックして表示されたポップアップメニューから[挿入|標準モジュール]メニューを選択します。
  4. 表示された[Module1(コード)]画面に、転送用のコードを追加していきます。
  5. [ファイル|上書き保存]メニューを選択して標準モジュールの変更を保存します。

転送用のサンプルコードはこんな感じです。 

Sub CustomRule_ForwardMail(Item As Outlook.MailItem)
Const TO_ADDRESS = "転送先のメールアドレス"

Dim objForwardItem As Outlook.MailItem
Dim strSenderName As String
Dim strToName As String
Dim strCCName As String

strSenderName = Item.SenderName
strToName = Item.To
strCCName = Item.CC

Set objForwardItem = Item.Forward
objForwardItem.To = TO_ADDRESS
objForwardItem.Body = "Forward This Mail By Outlook Script." & vbCrLf _
& "-----------------------------------------" & vbCrLf _
& "From: " & strSenderName & vbCrLf _
& "To: " & strToName & vbCrLf _
& "CC: " & strCCName & vbCrLf & vbCrLf _
& Item.Body

objForwardItem.Recipients.ResolveAll
objForwardItem.Send

VBAプロジェクトにデジタル署名を追加

追加したカスタムルールを実行する際に、Officeのセキュリティで止められないようにデジタル署名を追加します。(Officeセキュリティのレベルを下げることで、デジタル署名が無い場合でも実行できますが、メールクライアントとしてのセキュリティが下がってしまうので、リスクがあるのでおススメできません)

デジタル署名とは電子証明書のことで、通常はドメインの証明書サーバーやサードバーティの証明書サイトで無償、有償で手に入れられますが、今回はOutlookでのスクリプト実行についての投稿なので詳細は割愛しています。

  1. 利用可能なデジタル署名を用意して、Windowsにインポートしておきます。
  2. Outlookの[Microsoft Visual Basic for Applications]画面で、[ツール|デジタル署名]メニューを選択します。
  3. [デジタル署名]画面が表示されます。
  4. [署名]項目の[選択]ボタンをクリックします。
  5. 表示された署名一覧で利用するデジタル署名を選択して[OK]ボタンをクリックします。
  6. [デジタル署名]画面に、選択した[証明書名]が追加されます。
  7. [OK]ボタンをクリックして、[デジタル署名]画面を閉じます。

仕分けルールの作成

実際に作成したカスタムルールを実行する仕分けをOutlook上に作成していきます。

  1. Outlookを起動して[ホーム|ルール|仕分けルールの通知と管理]を選択します。
  2. [仕分けルールと通知]画面が表示されます。
  3. [新しい仕分けルール]ボタンをクリックします。
  4. [自動仕分けウィザード]画面が表示されます。
  5. [受信メッセージにルールを適用する]を選択して[次へ]ボタンをクリックします。
  6. [[宛先]または[CC]に自分の名前がある場合]にチェックを付けて[次へ]ボタンをクリックします。
  7. [スクリプトを実行する]にチェックを付けて[次へ]ボタンをクリックします。

    Outlookのバージョンで[アプリケーションを開始する]や[スクリプトを実行する]項目が表示されない場合があります。
    レジストリを修正することで表示させることができます。
    詳細はマイクロソフトのサポートチームのページをご覧ください。
  8. [ステップ2]に表示されている[スクリプト]リンクをクリックします。
  9. 表示された[スクリプトの選択]画面で先の手順で作成したカスタムルールを選択して[OK]ボタンをクリックします。
  10. [仕分けルールと通知]画面に、新しいルールが追加されます。
  11. [OK]ボタンをクリックして[仕分けルールと通知]画面を閉じます。

仕分けルールのテスト

受信トレイに沢山メールがある場合には、すべてを転送してしまうためあらかじめ、テスト用のメール1~2通を残して別のフォルダなどに移動しておきます。

  1. Outlookを起動します。
  2. [仕分けルールと通知]画面を表示します([ルール|仕分けルールと通知の管理]メニューなど)
  3. [宛先またはCCに自分の名前がある場合]項目のチェックボックスにチェックが付いている場合には外しておきます。
  4. [仕分けルールの実行]ボタンを選択します。
  5. [仕分けルールの実行]画面の[実行する仕分けルールの選択]内の[宛先またはCCに自分の名前がある場合]チェックボックスにチェックを付けます。
  6. [実行するフォルダ]が[受信トレイ]になっていること[サブフォルダを含む]チェックボックスのチェックが外れていることを確認して、[今すぐ実行]ボタンを選択します。
  7. スクリプトが実行され、指定したメールアドレスに転送されたことを確認します。

まとめ

大量のメールが届いている受信トレイなどは、どのメールが重要なのか一瞬で判別できなくなる場合があります。

あらかじめ用意された仕分けルールでは分別できないケースもあるので、自分でルールをカスタマイズしたい場合の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です