Outlookで特定の送信者の添付ファイルを自動印刷する方法|VBAとツール活用で時短を実現

ビジネスで多くのメールをさばいていると、特定の送信者から届く添付ファイルは印刷だけが目的というケースも少なくありません。そんなときにOutlookを使って自動印刷できるように設定しておくと、手間がグッと減り業務効率が大幅にアップします。ここではVBAスクリプトを使う方法とサードパーティツールの選択肢など、実践的な手順をわかりやすくご紹介します。

Outlookでの自動印刷の概要

Outlookでは、ルールを使って「特定の送信者」や「特定の件名」などに該当するメールを振り分けたり、自動的にフォルダに移動させたりといった管理が簡単に行えます。しかし、標準機能だけでは「受信時に添付ファイルを勝手に印刷する」という動作はサポートされていません。
かつては「ルールの最後にスクリプトを実行する」という方法で自動印刷が可能でしたが、Outlookのバージョンアップやセキュリティ方針の変更などにより、従来の方法が使えなくなったり動作不安定になったりする場合があります。
そこで、本記事では「VBAスクリプトを活用して添付ファイルを自動印刷する手順」と、VBAが苦手な方や他のツールを検討したい方向けに「サードパーティツールの利用」について解説します。

VBAを使った自動印刷の実現方法

まずはOutlookのVBA(Visual Basic for Applications)を用いた方法をご紹介します。これまでOutlookのマクロを触ったことがない方でも、手順を追って設定すれば動作させることは難しくありません。

VBAエディタを開く

VBAスクリプトを設定するには、Outlookに備わっているVBAエディタを使用します。VBAエディタを開く方法は以下のとおりです。

  1. Outlookを起動する。
  2. キーボードのAlt + F11キーを押す。
  3. Visual Basic for Applications(VBA)エディタが起動する。

もしキー操作でエディタが開かない場合、Outlookの「開発者向け」タブやオプション設定からVBAエディタを開く方法もあります。バージョンによってはリボンをカスタマイズしないと表示されない場合があるため、あらかじめ開発者向け機能を有効にしておきましょう。

ThisOutlookSessionにコードを貼り付ける

次に、VBAエディタ内で「ThisOutlookSession」を選択して、必要なコードを貼り付けます。基本的なサンプルコードは以下のようになります。

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim arr() As String
    Dim i As Integer
    Dim objMail As Outlook.MailItem
    Dim objAttachment As Outlook.Attachment

    arr = Split(EntryIDCollection, ",")
    For i = LBound(arr) To UBound(arr)
        Set objMail = Application.Session.GetItemFromID(arr(i))
        If objMail.SenderEmailAddress = "送信者のアドレス" Then ' ←ここを実際のアドレスに変更
            For Each objAttachment In objMail.Attachments
                ' 添付ファイルの保存先フォルダを指定
                objAttachment.SaveAsFile "C:\保存先フォルダ\" & objAttachment.FileName
                ' プリンタ実行コマンドを指定(例:プリンタソフトのexeや印刷コマンドなど)
                Shell "C:\Path\To\YourPrinter.exe " & """C:\保存先フォルダ\" & objAttachment.FileName & """", vbHide
            Next objAttachment
        End If
    Next i
End Sub

上記のうち、以下の項目は自分の環境に合わせて書き換えてください。

項目説明
送信者のアドレス自動印刷したいメールを送ってくる特定のアドレスを指定します。
C:\保存先フォルダ\添付ファイルを一時的に保存するフォルダパスをフルパスで指定します。
C:\Path\To\YourPrinter.exe印刷処理を実行するプログラムやバッチファイルなどを指定します。

たとえば、プリンターの専用ユーティリティやPDFソフトなどを利用して印刷させる場合は、その実行ファイルへのフルパスと引数を適宜書き換えます。また、コマンドラインで印刷を制御できるアプリケーションを登録しておけば、より柔軟に対応可能です。

ルールでスクリプトを実行するように設定

VBAコードが準備できたら、Outlookのルールと併用して「特定の条件を満たしたときにマクロを呼び出す」形にします。

  1. Outlookで「ホーム」タブから「ルール」→「ルールと通知の管理」を開く。
  2. 新規ルールを作成し、送信者などの条件を「特定のアドレス」と合致するように設定。
  3. 実行するアクションで「スクリプトを実行する」を選択し、先ほど作成したスクリプトを指定する。

ただし、Outlookのバージョンによっては「スクリプトを実行」が見当たらない場合があります。その場合は、VBAコード中の「Application_NewMailEx」の手順のみで、Outlookが新規メールを受信したときに自動で実行されるようにする方法も検討しましょう。

セキュリティ設定やマクロの有効化に注意

Outlookのセキュリティはデフォルトでマクロを無効化している場合があります。VBAコードを使用する際は「開発者向け」メニューからマクロのセキュリティ設定を変更し、「警告を表示してすべてのマクロを無効にする」あるいは「すべてのマクロを有効にする」に切り替えてください。
一方で、マクロを無効にするとウイルスやマルウェアを含むマクロが実行されてしまう危険性も増すため、適切なウイルス対策ソフトを導入する、信頼できるマクロのみを有効にするなどのセキュリティ対策を徹底しましょう。

サードパーティツールを利用する方法

VBAマクロを書くのが難しい場合や、どうしてもOutlookのバージョンによってはマクロを使えないケースも考えられます。そんなときはサードパーティ製のアドインや外部ツールを検討するのもひとつの手です。以下に、代表的な機能を一覧にしてみました。

ツール名特徴料金
Easy Print for Outlookメールや添付ファイルをワンクリックで印刷するアドイン。特定のルールと連携して自動印刷が可能。有料/無料版あり
Print Tools for Outlook多数の印刷オプションをカスタマイズ可能。PDF化や複数添付への一括対応などが可能。有料(試用期間あり)
その他カスタムスクリプトWindowsのタスクスケジューラとPowerShellなどを組み合わせて実装可能。Outlook連携はやや複雑。無料(要スクリプト作成)

ツールごとに機能や操作画面が異なるため、導入前に必ず試用版やドキュメントを確認しましょう。自動化機能が充実しているアドインはUIが使いやすい反面、細かい印刷設定まで自由にカスタマイズできないこともあります。逆にカスタムスクリプトによる方法は手間はかかるものの、印刷前にファイル変換やファイル名リネームを入れるなど柔軟な制御が可能です。

新しいOutlookやクラウド環境への注意点

最近のMicrosoft 365環境では、「New Outlook」(プレビュー版)と呼ばれる新しいUIのOutlookが登場しています。このバージョンでは従来のVBAマクロのサポートが限定的だったり、セキュリティポリシーによってマクロが一切動かない場合があります。
また、組織全体でクラウド型のOutlook(Exchange Online)を使用している環境では、サーバーサイドでのルール設定やセキュリティが強化されているため、クライアント側でのマクロ実行が制限されることもあります。
もし利用しているOutlookバージョンがVBAに対応していないならば、前述のサードパーティ製アドインや、Power Automateなどを使ったクラウドベースの処理(条件付きでOneDriveにアップロード後、印刷命令を流すなど)を検討してください。

トラブルシューティングと運用のコツ

想定通りに印刷されない場合

自動印刷が動作しない原因として、以下のような点がよく挙げられます。

  • ルールの条件が正しく設定されていない。
  • VBAのセキュリティレベルが高すぎてマクロが実行されていない。
  • 「送信者のアドレス」の記載が正確でない(大文字・小文字やドメインなど)。
  • プリンタやソフトウェアのパスが実際の環境に合っていない。
  • 添付ファイルの種類によってはShellコマンドで印刷できない(WordやExcelなど専用アプリから印刷が必要)。

これらが疑わしい場合は、まずルールそのものが正しく動いているかを確認し、続けてVBAのデバッグモードでステップ実行してみると原因を特定しやすくなります。

保存先フォルダのパーミッション

添付ファイルを一時保存するフォルダに、Outlookが読み書きできる権限が付与されていないと、マクロの実行時にエラーが出たり印刷が途中で止まったりすることがあります。
ネットワークドライブを保存先にしたい場合や、OneDriveなどクラウドストレージを使いたい場合は、アクセス権限を確認し、フォルダパスを正しく記述しておくことが大切です。

テスト環境での動作確認

本番環境のOutlookでいきなりマクロを動かすのはリスクがあるため、テスト用のアカウントやサンプルの送信者アドレスを使って動作確認を行うのがベストです。受信トレイにテストメールを送ってみて、自動印刷が実際に行われるか確認し、問題があればデバッグした上で本稼働させましょう。

運用時のポイント

定期的なメンテナンス

OutlookはバージョンアップやWindowsの更新などによって動作が微妙に変化することがあります。印刷用の外部ソフトやプリンタのドライバ更新も同様です。定期的に運用確認を行い、環境に合わせてスクリプトやルールを調整してください。

セキュリティ対策とバックアップ

マクロが有効になっている環境では、悪意あるマクロの実行リスクも高まります。組織内のガバナンスを徹底し、マクロの署名や実行ポリシーをしっかり設定しましょう。さらに、万一に備えて、重要なOutlookの設定やVBAコードはバックアップをとっておくと安心です。

複数アドレスへの対応

同じマクロで複数の送信者アドレスからのメールを監視したい場合は、If objMail.SenderEmailAddress = "xxx" の部分を Select Case ステートメントに変えたり、配列やリストで管理して複数条件をチェックすることも可能です。これは高度なVBAの知識が必要ですが、一度組んでしまえば複数の送信元に一括対応できるため、さらなる業務効率化が期待できます。

まとめ

Outlookで特定の送信者から届く添付ファイルを自動で印刷するには、VBAマクロとルールの組み合わせが基本的なアプローチです。慣れは必要ですが、一度設定すれば日々のメール対応が格段に楽になります。また、サードパーティツールを活用すれば、コーディングが苦手な方でも視覚的なインターフェースを通じて自動印刷を行える可能性があります。
職場の環境やセキュリティポリシー、Outlookのバージョンに合わせて最適な方法を選択し、ぜひ自動印刷機能を業務に取り入れてみてください。面倒な手作業が減り、重要なタスクに集中できる時間が増えることで、生産性が大幅に向上するはずです。

コメント

コメントする