メインコンテンツへスキップ

Outlookでメールが届いたときに添付ファイルを自動的に印刷するにはどうすればよいですか?

Author: Siluvia Last Modified: 2025-05-23

このチュートリアルでは、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) ウィンドウを開き、次のコードをこのコードウィンドウにコピーします。

steps of auto printing attachments when emails arrive in Outlook

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

注意点:

1. このVBAコードを使用して受信メール内のPDFファイルのみを印刷する前に、まずAdobe Acrobat Reader をダウンロードしてインストールし、コンピュータ上でデフォルトのPDFリーダーとして設定する必要があります。
2. 「Case "pdf"」の行で、「pdf」を印刷したいファイル拡張子に変更してください。

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

steps of auto printing attachments when emails arrive in Outlook

4. コードを保存し、Alt + Qキーを押してMicrosoft Visual Basic for Applicationsウィンドウを閉じます。

注意: Outlookで「すべてのマクロを有効にする」オプションが有効になっていることを確認してください。このオプションは、以下に示す手順で確認できます。

steps of auto printing attachments when emails arrive in Outlook
ステップ2: スクリプトを使用するためのルールを構築する

OutlookにVBAスクリプトを追加したら、特定の条件に基づいてそのスクリプトを使用するルールを作成する必要があります。

1. ホームタブに移動し、Rules > Manage Rules & Alerts をクリックします。

steps of auto printing attachments when emails arrive in Outlook

2. Rules and Alertsダイアログボックスで、New Ruleボタンをクリックしてルールを作成します。

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

steps of auto printing attachments when emails arrive in Outlook

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

steps of auto printing attachments when emails arrive in Outlook

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

4.1) 必要に応じて、Step 1ボックス内に1つまたは複数の条件を指定します。
この場合、特定の送信者からの受信メールの添付ファイルのみを印刷したいので、「from people or public group」ボックスをチェックします。
4.2) Step 2ボックス内の下線付きの値をクリックして条件を編集します。
4.3) Nextをクリックします。スクリーンショットをご覧ください。
steps of auto printing attachments when emails arrive in Outlook

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

5.1) Step 1: Select action(s)セクションで、「run a script」ボックスをチェックします。
5.2) Step 2セクションで、下線付きのテキスト「a script」をクリックします。
5.3) 開いたSelect Scriptダイアログボックスで、先ほど追加したVBAコードの名前をクリックし、OKをクリックします。
5.4) Nextボタンをクリックします。スクリーンショットをご覧ください。
steps of auto printing attachments when emails arrive in Outlook

ヒント:run a script」オプションがRules Wizardに表示されない場合は、この記事で紹介されている方法に従って表示させることができます:Outlookルールで欠落しているRun A Scriptオプションを復元する方法

6. 次に、別のRules Wizardがポップアップして例外を尋ねてきます。必要に応じて例外を選択し、それ以外の場合は何も選択せずにNextボタンをクリックします。

steps of auto printing attachments when emails arrive in Outlook

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

steps of auto printing attachments when emails arrive in Outlook

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

steps of auto printing attachments when emails arrive in Outlook

これで、指定された人物からのメールが受信された際に、添付ファイルが自動的に印刷されます。


関連記事

Outlookで1通のメールまたは選択したメールの添付ファイルのみを印刷する
Outlookではメールを印刷できますが、Outlookで1通のメールや選択したメールの添付ファイルだけを印刷したことはありますか?この記事では、この作業を解決するためのコツを紹介します。

Outlookでメールのヘッダーのみを印刷する
Outlookでメールを印刷すると、メールヘッダーと本文の両方が印刷されます。しかし、特殊な状況では、件名、送信者、受信者などの情報を持つメッセージヘッダーのみを印刷したい場合があります。この記事では、それを実現するための2つの解決策を紹介します。

Outlookで指定された/カスタム日付範囲のカレンダーを印刷する
通常、Outlookで月表示のカレンダーを印刷すると、現在選択されている日付を含む月が自動的に選択されます。しかし、3ヶ月間、半年間など、カスタム日付範囲のカレンダーを印刷する必要があるかもしれません。この記事では、その解決策を紹介します。

Outlookで写真付きの連絡先を印刷する
通常、Outlookで連絡先を印刷しても、その写真は印刷されません。しかし、時々、写真付きの連絡先を印刷するとより印象的になることがあります。この記事では、それを実現するためのいくつかの方法を紹介します。

Outlookでメールの一部を選択して印刷する
あるメールを受け取った際、全体ではなくメール内容の一部のみを印刷する必要がある場合、どのように対処しますか?実際、FirefoxやInternet Explorerなどのインターネットブラウザの助けを借りて、Outlookでこの操作を実現することができます。ここでは、インターネットブラウザを例に取り上げ、以下のチュートリアルをご覧ください。

「Outlookでの印刷」に関するその他の記事...


最高のオフィス生産性ツール

速報: Kutools for Outlook が無料版をリリース!

新しい Kutools for Outlook の無料版を体験してください。70以上の素晴らしい機能が永遠に使えます!今すぐダウンロードをクリック!

🤖 Kutools AI : 高度なAI技術を使用して、メールの返信、要約、最適化、拡張、翻訳、作成を簡単に行います。

📧 メール自動化: 自動返信 (POPとIMAPで利用可能) / メール送信のスケジュール / メール送信時にルールによる自動 CC/BCC / 自動転送 (高度なルール) / 自動挨拶追加 / 複数の宛先を持つメールを個別のメールに自動的に分割...

📨 メール管理: メールの取り消し / 件名やその他によるスパムメールのブロック / 重複したメールの削除 / 高度な検索 / フォルダーを整理...

📁 添付ファイルプロ: バッチ保存 / バッチ切り離し / バッチ圧縮 / 自動保存 / 自動的に切り離す / 自動圧縮...

🌟 インターフェースマジック: 😊より美しくクールな絵文字 /重要なメールが来たときに通知 / クローズ中ではなくOutlookを最小化...

👍 ワンクリックの驚き: 全員に【Attachment】付きで返信 / フィッシング対策メール / 🕘送信者のタイムゾーンを表示...

👩🏼‍🤝‍👩🏻 連絡先とカレンダー: 選択したメールから連絡先を一括追加 /連絡先グループを個別のグループに分割 / 誕生日のリマインダーを削除...

Kutools for Outlook をワンクリックで即座にアンロック。待たずに今すぐダウンロードして効率を高めましょう!

kutools for outlook features1 kutools for outlook features2