Outlook でメールが届いた際に添付ファイルを自動で印刷する方法は?
このチュートリアルでは、VBA スクリプトとOutlook のルールを組み合わせて、特定のメールが受信された際に添付ファイルを自動的に印刷する方法をご紹介します。
特定のメールが到着した際に添付ファイルを自動印刷する
たとえば、特定の送信者から届くメールの添付ファイルを自動的に印刷したい場合は、以下の手順で簡単に設定できます。
ステップ1:Outlook にスクリプトを作成する
まず、Outlook に VBA スクリプトを作成する必要があります。
1.Outlook を起動し、AltキーとF11キーを同時に押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。
2.Microsoft Visual Basic for Applicationsウィンドウで、Project1 > Microsoft Outlook Objects > ThisOutlookSessionをダブルクリックして、ThisOutlookSession (コード)ウィンドウを開き、次のコードをこのコードウィンドウにコピーしてください。

VBA コード1:メール到着時に添付ファイル(すべての種類の添付ファイル)を自動印刷する
Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20230223
Dim xFS As FileSystemObject
Dim xTempFolder As String
Dim xAtt As Attachment
Dim xShell As Object
Dim xFolder As Object, xFolderItem As Object
Dim xFileName As String
On Error GoTo xError
If Item.Attachments.Count = 0 Then Exit Sub
Set xFS = New FileSystemObject
xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
xTempFolder = xTempFolder & "\ATMP" & Format(Item.ReceivedTime, "yyyymmddhhmmss")
If Not xFS.FolderExists(xTempFolder) Then
MkDir (xTempFolder)
End If
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.NameSpace(0)
For Each xAtt In Item.Attachments
If IsEmbeddedAttachment(xAtt) = False Then
xFileName = xTempFolder & "\" & xAtt.FileName
xAtt.SaveAsFile (xFileName)
Set xFolderItem = xFolder.ParseName(xFileName)
xFolderItem.InvokeVerbEx ("print")
End If
Next xAtt
Set xFS = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
Set xShell = Nothing
xError:
If Err <> 0 Then
MsgBox Err.Number & " - " & Err.Description, , "Kutools for Outlook"
Err.Clear
End If
Exit Sub
End Sub
Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
xHtml = xItem.HTMLBody
xID = "cid:" & xCid
If InStr(xHtml, xID) > 0 Then
IsEmbeddedAttachment = True
End If
End If
End Function 注:このコードは、メールで受信したすべての種類の添付ファイルを印刷できます。PDF ファイルなど、特定の種類の添付ファイルのみを印刷したい場合は、以下の VBA コードをご利用ください。
VBA コード2:メール到着時に指定した種類の添付ファイルを自動印刷する
Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20230223
Dim xFS As FileSystemObject
Dim xTempFolder As String
Dim xAtt As Attachment
Dim xShell As Object
Dim xFolder As Object, xFolderItem As Object
Dim xFileType As String, xFileName As String
On Error GoTo xError
If Item.Attachments.Count = 0 Then Exit Sub
Set xFS = New FileSystemObject
xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
xTempFolder = xTempFolder & "\ATMP" & Format(Item.ReceivedTime, "yyyymmddhhmmss")
If Not xFS.FolderExists(xTempFolder) Then
MkDir (xTempFolder)
End If
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.NameSpace(0)
For Each xAtt In Item.Attachments
If IsEmbeddedAttachment(xAtt) = False Then
xFileName = xAtt.FileName
xFileType = LCase$(Right$(xFileName, VBA.Len(xFileName) - VBA.InStrRev(xFileName, ".")))
xFileName = xTempFolder & "\" & xFileName
Select Case xFileType
Case "pdf" 'change "pdf" to the file extension you want to print
xAtt.SaveAsFile (xFileName)
Set xFolderItem = xFolder.ParseName(xFileName)
xFolderItem.InvokeVerbEx ("print")
End Select
End If
Next xAtt
Set xFS = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
Set xShell = Nothing
xError:
If Err <> 0 Then
MsgBox Err.Number & " - " & Err.Description, , "Kutools for Outlook"
Err.Clear
End If
Exit Sub
End Sub
Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
xHtml = xItem.HTMLBody
xID = "cid:" & xCid
If InStr(xHtml, xID) > 0 Then
IsEmbeddedAttachment = True
End If
End If
End Function
注意事項:
3.次に、ツール > 参照をクリックします。参照 – Project1ダイアログボックスが表示されたら、Microsoft Scripting Runtimeのチェックボックスをオンにして、OKボタンをクリックします。

4.コードを保存し、Alt+Qキーを押して、Microsoft Visual Basic for Applicationsウィンドウを閉じてください。
注:Outlook ですべてのマクロを有効にするオプションが有効になっていることをご確認ください。この設定は、以下の手順で確認できます。

ステップ2:スクリプトを使用するルールを作成する
Outlook に VBA スクリプトを追加したら、そのスクリプトを特定の条件に基づいて実行するためのルールを作成する必要があります。
1.[ホーム]タブに移動し、ルール > ルールとアラートの管理をクリックします。

2.ルールとアラートダイアログボックスで、新しいルールボタンをクリックし、ルールを作成します。
ヒント:Outlook に複数のメールアカウントを追加している場合、ルールを適用したいフォルダーをこのフォルダーに変更を適用するドロップダウンリストで指定してください。指定しないと、現在のアカウントの受信トレイに適用されます。

3.最初のルールウィザードダイアログボックスで、受信メッセージに対してルールを適用するをステップ1ボックス内で選択し、次へ

4.2 番目のルールウィザードダイアログボックスで、以下の操作を行います。

5.3 番目のルールウィザードダイアログボックスで、次のように設定します。

ヒント:「スクリプトを実行する」オプションがルールウィザードに表示されない場合は、この記事で紹介している方法に従って表示できます:Outlook ルールで「スクリプトを実行する」オプションが消えた場合の復元方法。
6.次に、例外を設定するかどうかを尋ねる別のルールウィザードが表示されます。必要に応じて例外を設定できますが、特に設定しない場合は、何も選択せずに次へボタンをクリックします。

7.最後のルールウィザードで、ルールの名前を指定して完了ボタンをクリックします。

8.その後、ルールとアラートダイアログボックスに戻り、作成したルールが一覧に表示されていることを確認してから、OKボタンをクリックし、すべての設定を完了します。

これ以降、指定した人物からメールを受信すると、添付ファイルが自動的に印刷されます。
関連記事
Outlook で1 通のメールまたは選択したメールから添付ファイルのみを印刷する
Outlook ではメールを印刷できますが、1 通のメールや選択したメールから「添付ファイルだけ」を印刷したいと思ったことはありませんか?この記事では、その方法をわかりやすくご紹介します。
Outlook でメールのメッセージヘッダーのみを印刷する
Outlook でメールを印刷すると、通常はメッセージヘッダーと本文の両方が出力されます。しかし、件名・送信者・受信者などの情報が含まれるメッセージヘッダーだけを印刷したい場合もあるでしょう。この記事では、その方法を2 つご紹介します。
Outlook で指定/カスタム日付範囲のカレンダーを印刷する
通常、Outlook で月表示のカレンダーを印刷すると、現在選択されている日付を含む月が自動的に選ばれます。でも、「3 か月分」や「半年分」など、任意の期間でカレンダーを印刷したいこともあるはず。この記事では、そんな要望を叶える方法をご紹介します!
Outlook で写真付きの連絡先を印刷する
通常、Outlook で連絡先を印刷する際、連絡先の写真は印刷されません。しかし、写真付きで印刷すれば、より印象的になる場合もあります。この記事では、その実現に役立つ回避策をいくつかご紹介します。
Outlook でメールの一部を選択して印刷する
メールを受信したら、全文ではなく本文の一部だけを印刷したいと思うことはありませんか?実は、Firefox や Internet Explorer などのインターネットブラウザーを使えば、Outlook でこの操作が可能です。ここでは、インターネットブラウザーを使った方法を例に、以下のチュートリアルをご覧ください。
最高の Office 生産性ツール
まったく新しいKutools for Outlook を、100 以上の驚きの機能とともに体験しましょう!今すぐダウンロード!
🤖KUTOOLS AI:高度な AI 技術を活用して、メールの返信、要約、最適化、拡張、翻訳、作成など、あらゆる操作をラクラクこなします。
📧メール自動化:自動返信(POP および IMAP 対応)/メールのスケジュール送信/メール送信時にルールに基づいて自動 CC/BCC/自動転送(高度なルール)/自動で挨拶文を追加/複数の宛先を持つメールを個別のメッセージに自動分割...
📨メール管理:メールの取り消し/件名などを基準に詐欺メールをブロック/重複したメールを削除/高度な検索/フォルダーを整理...
📁添付ファイルプロ:一括保存/一括分離/一括圧縮/自動保存/自動的に切り離す/自動圧縮...
🌟インターフェースの魅力:😊さらに美しくクールな絵文字を多数収録/重要なメールが届いた際に通知/Outlook を閉じる代わりに最小化...
👍ワンクリックの驚き:全員に【Attachment】付きで返信/フィッシングメール対策/🕘送信者の現在時刻ゾーンを表示...
👩🏼🤝👩🏻連絡先とカレンダー:選択したメールから連絡先を追加を一括登録/連絡先グループを個別のグループに分割/誕生日のリマインダーを削除...
Kutools はお好みの言語でお使いいただけます!英語、スペイン語、ドイツ語、フランス語、中国語をはじめ、40 以上の言語をサポートしています!
ワンクリックでKutools for Outlook の機能を即解放!今すぐダウンロードして、効率を飛躍的にアップさせましょう!


🚀 ワンクリックダウンロード — Office アドインをすべて入手
強く推奨:Kutools for Office(5-in-1)
ワンクリックで5 つのインストーラーを 一括ダウンロード! ―Kutools for Excel、Outlook、Word、PowerPointおよびOffice Tab Pro。今すぐダウンロード!
- ✅ワンクリックで簡単操作:5 つのセットアップパッケージをたった1 回のクリックで一括ダウンロードできます。
- 🚀どんな Office 作業にも対応可能:必要なときに、必要なアドインをすぐインストールできます。
- 🧰含まれるもの:Kutools for Excel / Kutools for Outlook / Kutools for Word / Office Tab Pro / Kutools for PowerPoint