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

Outlookで複数のメールからすべての添付ファイルをフォルダに保存するにはどうすればよいですか?

Author: Siluvia Last Modified: 2025-05-23

Outlookには組み込みの「すべての添付ファイルを保存」機能があり、1通のメールからすべての添付ファイルを簡単に保存できます。しかし、複数のメールから一度にすべての添付ファイルを保存したい場合、直接的な機能はありません。その場合、すべてのメールから添付ファイルが保存されるまで、各メールごとに「すべての添付ファイルを保存」機能を繰り返し適用する必要があります。これは非常に時間がかかります。この記事では、Outlookで複数のメールからすべての添付ファイルを一括して特定のフォルダに簡単に保存するための2つの方法を紹介します。

VBAコードを使用して複数のメールからすべての添付ファイルをフォルダに保存する
驚くべきツールを使って数回クリックするだけで、複数のメールからすべての添付ファイルをフォルダに保存する


VBAコードを使用して複数のメールからすべての添付ファイルをフォルダに保存する

このセクションでは、ステップバイステップガイドでVBAコードを紹介し、複数のメールから一度にすべての添付ファイルを特定のフォルダに迅速に保存する方法をお伝えします。以下の手順に従ってください。

まず、コンピュータ上に添付ファイルを保存するためのフォルダを作成する必要があります。

「ドキュメント」フォルダに入り、「添付ファイル」という名前のフォルダを作成します。スクリーンショットをご覧ください:

save attachments by vba 1

保存したい添付ファイルがあるメールを選択し、「Alt」+「F11」キーを押して「Microsoft Visual Basic for Applications」ウィンドウを開きます。

「挿入」>「モジュール」をクリックして「モジュール」ウィンドウを開き、次のいずれかのVBAコードをそのウィンドウにコピーします。

VBAコード1: 複数のメールからの添付ファイルを一括保存(同じ名前の添付ファイルをそのまま保存)

ヒント: このコードは、ファイル名の後に数字の1、2、3…を追加することで、同じ名前の添付ファイルを保存します。

Dim GCount As Integer
Dim GFilepath As String
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
    VBA.MkDir xFolderPath
End If
GFilepath = ""
For Each xMailItem In xSelection
    Set xAttachments = xMailItem.Attachments
    xAttCount = xAttachments.Count
    xSaveFiles = ""
    If xAttCount > 0 Then
        For i = xAttCount To 1 Step -1
            GCount = 0
            xFilePath = xFolderPath & xAttachments.Item(i).FileName
            GFilepath = xFilePath
            xFilePath = FileRename(xFilePath)
            If IsEmbeddedAttachment(xAttachments.Item(i)) = False Then
                xAttachments.Item(i).SaveAsFile xFilePath
                If xMailItem.BodyFormat <> olFormatHTML Then
                    xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
                Else
                    xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
                End If
            End If
        Next i
    End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub

Function FileRename(FilePath As String) As String
Dim xPath As String
Dim xFso As FileSystemObject
On Error Resume Next
Set xFso = CreateObject("Scripting.FileSystemObject")
xPath = FilePath
FileRename = xPath
If xFso.FileExists(xPath) Then
    GCount = GCount + 1
    xPath = xFso.GetParentFolderName(GFilepath) & "\" & xFso.GetBaseName(GFilepath) & " " & GCount & "." + xFso.GetExtensionName(GFilepath)
    FileRename = FileRename(xPath)
End If
xFso = Nothing
End Function

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

VBAコード2: 複数のメールからの添付ファイルを一括保存(重複チェックあり)
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
Dim xYesNo As Integer
Dim xFlag As Boolean
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
    VBA.MkDir xFolderPath
End If
For Each xMailItem In xSelection
    Set xAttachments = xMailItem.Attachments
    xAttCount = xAttachments.Count
    xSaveFiles = ""
    If xAttCount > 0 Then
        For i = xAttCount To 1 Step -1
            xFilePath = xFolderPath & xAttachments.Item(i).FileName
            xFlag = True
            If VBA.Dir(xFilePath, 16) <> Empty Then
                xYesNo = MsgBox("The file is exists, do you want to replace it", vbYesNo + vbInformation, "Kutools for Outlook")
                If xYesNo = vbNo Then xFlag = False
            End If
            If xFlag = True Then
                xAttachments.Item(i).SaveAsFile xFilePath
                If xMailItem.BodyFormat <> olFormatHTML Then
                    xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
                Else
                    xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
                End If
            End If
        Next i
    End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub

save attachments by vba 2

注意:

1) 同じ名前のすべての添付ファイルを1つのフォルダに保存したい場合は、上記の「VBAコード1」を適用してください。このコードを実行する前に、「ツール」>「参照設定」をクリックし、「参照設定 - プロジェクト」ダイアログボックスで「Microsoft Scripting Runtime」のチェックボックスをオンにしてください。
save attachments by vba 3
2) 添付ファイル名の重複を確認したい場合は、「VBAコード2」を適用してください。コードを実行すると、重複する添付ファイルを置き換えるかどうかを確認するダイアログが表示されますので、必要に応じて「はい」または「いいえ」を選択してください。

「F5」キーを押してコードを実行します。

選択したメール内のすべての添付ファイルが、ステップ1で作成したフォルダに保存されます。

注意: 「Microsoft Outlook」のプロンプトボックスが表示される場合がありますので、「許可」ボタンをクリックして続行してください。


驚くべきツールを使って複数のメールからすべての添付ファイルをフォルダに保存する

VBA初心者の方には、「Kutools for Outlook」の「すべての添付ファイルを保存」ユーティリティを強くお勧めします。このユーティリティを使えば、Outlook内で数回クリックするだけで、複数のメールからすべての添付ファイルを一括して簡単に保存できます。

Kutools for Outlookで究極のメール効率を解き放とう!強力な70の機能を永久に無料で利用できます。今すぐ無料版をダウンロード

1. 保存したい添付ファイルを含むメールを選択します。

ヒント: 「Ctrl」キーを押しながら個別に選択することで、隣接していない複数のメールを選択できます。
または、「Shift」キーを押しながら最初と最後のメールを選択することで、隣接している複数のメールを選択できます。

2. 「Kutools Plus」>「添付ファイルツール」>「すべて保存」をクリックします。スクリーンショットをご覧ください:

3. 「保存設定」ダイアログで、 option button ボタンをクリックして添付ファイルを保存するフォルダを選択し、「OK」ボタンをクリックします。

save attachments by kutools for outlook 1

4. 次に表示されるダイアログボックスで「OK」を2回クリックします。これで、選択したメール内のすべての添付ファイルが指定されたフォルダに一度に保存されます。

注意:

  • 1. メールに基づいて異なるフォルダに添付ファイルを保存したい場合は、「次の形式でサブフォルダを作成」のチェックボックスをオンにし、ドロップダウンからフォルダスタイルを選択してください。
  • 2. すべての添付ファイルを保存するだけでなく、特定の条件に基づいて添付ファイルを保存することもできます。たとえば、ファイル名に「請求書」という単語が含まれるPDFファイルの添付ファイルのみを保存したい場合は、「詳細オプション」ボタンをクリックして条件を展開し、次のように設定します。
  • 3. メールが届いたときに自動的に添付ファイルを保存したい場合は、「自動保存」機能が役立ちます。
  • 4. 選択したメールから直接添付ファイルを取り外すには、「Kutools for Outlook」の「すべての添付ファイルを取り外す」機能が役立ちます。

関連記事

Outlookでメール本文に添付ファイルを挿入する
通常、添付ファイルは作成中のメールの添付フィールドに表示されます。このチュートリアルでは、Outlookでメール本文に簡単に添付ファイルを挿入する方法を提供します。

Outlookから特定のフォルダに添付ファイルを自動的にダウンロード/保存する
一般的に、Outlookでは「添付ファイル」>「すべての添付ファイルを保存」をクリックすることで、1通のメールのすべての添付ファイルを保存できます。しかし、受信したすべてのメールやこれから受信するメールの添付ファイルをすべて保存する必要がある場合はどうすればよいでしょうか?この記事では、Outlookから特定のフォルダに添付ファイルを自動的にダウンロードするための2つの解決策を紹介します。

Outlookで1通または複数のメールのすべての添付ファイルを印刷する
ご存知の通り、Microsoft Outlookで「ファイル」>「印刷」をクリックすると、ヘッダーや本文などのメール内容のみが印刷され、添付ファイルは印刷されません。ここでは、Microsoft Outlookで選択したメールのすべての添付ファイルを簡単に印刷する方法をご紹介します。

Outlookで添付ファイル(内容)内を検索する
Outlookのインスタント検索ボックスにキーワードを入力すると、メールの件名、本文、添付ファイルなどでそのキーワードが検索されます。しかし、添付ファイルの内容だけを検索したい場合はどうすればよいでしょうか?この記事では、Outlookで添付ファイルの内容内を簡単に検索するための詳細な手順を紹介します。

Outlookで返信時に添付ファイルを保持する
Microsoft Outlookでメールメッセージを転送すると、元の添付ファイルは転送されたメッセージに残ります。しかし、返信する場合、元の添付ファイルは新しい返信メッセージに添付されません。ここでは、Microsoft 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