Outlookでメールが届いたときに添付ファイルを自動的に印刷するにはどうすればよいですか?
このチュートリアルでは、VBAスクリプトとOutlookルールを組み合わせて使用し、特定のメールに添付されたファイルを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 (Code) ウィンドウを開き、次のコードをこのコードウィンドウにコピーします。

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. Tools > References をクリックします。表示されるReferences – Project1ダイアログボックスで、Microsoft Scripting Runtimeのチェックボックスをオンにして、OKボタンをクリックします。

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

ステップ2: スクリプトを使用するためのルールを構築する
OutlookにVBAスクリプトを追加したら、特定の条件に基づいてそのスクリプトを使用するルールを作成する必要があります。
1. ホームタブに移動し、Rules > Manage Rules & Alerts をクリックします。

2. Rules and Alertsダイアログボックスで、New Ruleボタンをクリックしてルールを作成します。
ヒント: 複数のメールアカウントをOutlookに追加している場合、ルールを適用するフォルダーをApply changes to this folderドロップダウンリストで指定してください。指定しない場合、現在選択中のメールアカウントの受信トレイに適用されます。

3. 最初のRules Wizardダイアログボックスで、 Step 1ボックス内で「受信したメッセージにルールを適用する」を選択し、次にNextをクリックします。

4. 2番目のRules Wizardダイアログボックスで、次の操作が必要です。

5. 3番目のRules Wizardダイアログボックスで、次の設定を行う必要があります。

ヒント: 「run a script」オプションがRules Wizardに表示されない場合は、この記事で紹介されている方法に従って表示させることができます:Outlookルールで欠落しているRun A Scriptオプションを復元する方法。
6. 次に、別のRules Wizardがポップアップして例外を尋ねてきます。必要に応じて例外を選択し、それ以外の場合は何も選択せずにNextボタンをクリックします。

7. 最後のRules Wizardで、ルールの名前を指定し、Finishボタンをクリックします。

8. これでRules and Alertsダイアログボックスに戻り、作成したルールがリストに表示されます。OKボタンをクリックして設定を完了します。

これで、指定された人物からのメールが受信された際に、添付ファイルが自動的に印刷されます。
関連記事
Outlookで1通のメールまたは選択したメールの添付ファイルのみを印刷する
Outlookではメールを印刷できますが、Outlookで1通のメールや選択したメールの添付ファイルだけを印刷したことはありますか?この記事では、この作業を解決するためのコツを紹介します。
Outlookでメールのヘッダーのみを印刷する
Outlookでメールを印刷すると、メールヘッダーと本文の両方が印刷されます。しかし、特殊な状況では、件名、送信者、受信者などの情報を持つメッセージヘッダーのみを印刷したい場合があります。この記事では、それを実現するための2つの解決策を紹介します。
Outlookで指定された/カスタム日付範囲のカレンダーを印刷する
通常、Outlookで月表示のカレンダーを印刷すると、現在選択されている日付を含む月が自動的に選択されます。しかし、3ヶ月間、半年間など、カスタム日付範囲のカレンダーを印刷する必要があるかもしれません。この記事では、その解決策を紹介します。
Outlookで写真付きの連絡先を印刷する
通常、Outlookで連絡先を印刷しても、その写真は印刷されません。しかし、時々、写真付きの連絡先を印刷するとより印象的になることがあります。この記事では、それを実現するためのいくつかの方法を紹介します。
Outlookでメールの一部を選択して印刷する
あるメールを受け取った際、全体ではなくメール内容の一部のみを印刷する必要がある場合、どのように対処しますか?実際、FirefoxやInternet Explorerなどのインターネットブラウザの助けを借りて、Outlookでこの操作を実現することができます。ここでは、インターネットブラウザを例に取り上げ、以下のチュートリアルをご覧ください。
最高のオフィス生産性ツール
速報: Kutools for Outlook が無料版をリリース!
新しい Kutools for Outlook の無料版を体験してください。70以上の素晴らしい機能が永遠に使えます!今すぐダウンロードをクリック!
🤖 Kutools AI : 高度なAI技術を使用して、メールの返信、要約、最適化、拡張、翻訳、作成を簡単に行います。
📧 メール自動化: 自動返信 (POPとIMAPで利用可能) / メール送信のスケジュール / メール送信時にルールによる自動 CC/BCC / 自動転送 (高度なルール) / 自動挨拶追加 / 複数の宛先を持つメールを個別のメールに自動的に分割...
📨 メール管理: メールの取り消し / 件名やその他によるスパムメールのブロック / 重複したメールの削除 / 高度な検索 / フォルダーを整理...
📁 添付ファイルプロ: バッチ保存 / バッチ切り離し / バッチ圧縮 / 自動保存 / 自動的に切り離す / 自動圧縮...
🌟 インターフェースマジック: 😊より美しくクールな絵文字 /重要なメールが来たときに通知 / クローズ中ではなくOutlookを最小化...
👍 ワンクリックの驚き: 全員に【Attachment】付きで返信 / フィッシング対策メール / 🕘送信者のタイムゾーンを表示...
👩🏼🤝👩🏻 連絡先とカレンダー: 選択したメールから連絡先を一括追加 /連絡先グループを個別のグループに分割 / 誕生日のリマインダーを削除...
Kutools for Outlook をワンクリックで即座にアンロック。待たずに今すぐダウンロードして効率を高めましょう!

