KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

Outlook で複数のフォルダーやサブフォルダーからメールをExcel にエクスポートするには、どうすればよいですか?

著者Kelly変更日

複数のフォルダーやサブフォルダーからメールをExcel にエクスポートするのは、手動操作やOutlook の標準機能だけでは非常に煩雑です。 しかし、実はもっと効率的な方法があります! 本記事では、VBA を使った方法と、さらに素早く簡単に使える「Kutools for Outlook」による方法の2 つをご紹介します。 VBA 方式は柔軟性に優れていますが、複雑なセットアップやコードの調整が必要です。 一方、「Kutools for Outlook」ならわずか数回のクリックでメールをExcel にエクスポートでき、時間も手間も大幅に節約できます。 さっそく詳細をご覧ください!

VBA を使用して複数のフォルダーやサブフォルダーからメールをExcel にエクスポートする(複雑だが柔軟)

Kutools for Outlook を使用してフォルダーやサブフォルダーからメールをExcel にエクスポートする 👍(効率的で使いやすい)


VBA を使用して複数のフォルダーやサブフォルダーからメールをExcel にエクスポートする

VBA は、コーディングに慣れており、柔軟にカスタマイズできるソリューションをお求めの方に最適です。この方法を使えば、複数のフォルダーやサブフォルダーを指定し、各メールを個別のExcel ファイルとしてエクスポートできます。ただし、技術的な知識と慎重なコードの調整が不可欠です。

手順 1: VBA エディターを開く

Alt+F11」を押すと、「Microsoft Visual Basic for Applications」ウィンドウが起動します。

手順 2: 新しいモジュールを挿入する

「挿入」>「モジュール」をクリックし、表示される新しいモジュールウィンドウに以下の VBA コードを貼り付けてください。

VBA: 複数のフォルダーやサブフォルダーからメールをExcel にエクスポートする

Const MACRO_NAME = "Export Outlook Folders to Excel"
Sub ExportMain()
ExportToExcel "destination_folder_path\A.xlsx", "your_email_account\folder\subfolder_1"
ExportToExcel "destination_folder_path\B.xlsx", "your_email_account\folder\subfolder_2"
MsgBox "Process complete.", vbInformation + vbOKOnly, MACRO_NAME
End Sub

Sub ExportToExcel(strFilename As String, strFolderPath As String)
Dim olkMsg As Object
Dim olkFld As Object
Dim excApp As Object
Dim excWkb As Object
Dim excWks As Object
Dim intRow As Integer
Dim intVersion As Integer

If strFilename <> "" Then
If strFolderPath <> "" Then
Set olkFld = OpenOutlookFolder(strFolderPath)
If TypeName(olkFld) <> "Nothing" Then
intVersion = GetOutlookVersion()
Set excApp = CreateObject("Excel.Application")
Set excWkb = excApp.Workbooks.Add()
Set excWks = excWkb.ActiveSheet
With excWks
.Cells(1, 1) = "Subject"
.Cells(1, 2) = "Received"
.Cells(1, 3) = "Sender"
End With
intRow = 2
For Each olkMsg In olkFld.Items
If olkMsg.Class = olMail Then
excWks.Cells(intRow, 1) = olkMsg.Subject
excWks.Cells(intRow, 2) = olkMsg.ReceivedTime
excWks.Cells(intRow, 3) = GetSMTPAddress(olkMsg, intVersion)
intRow = intRow + 1
End If
Next
Set olkMsg = Nothing
excWkb.SaveAs strFilename
excWkb.Close
Else
MsgBox "The folder '" & strFolderPath & "' does not exist in Outlook.", vbCritical + vbOKOnly, MACRO_NAME
End If
Else
MsgBox "The folder path was empty.", vbCritical + vbOKOnly, MACRO_NAME
End If
Else
MsgBox "The filename was empty.", vbCritical + vbOKOnly, MACRO_NAME
End If

Set olkMsg = Nothing
Set olkFld = Nothing
Set excWks = Nothing
Set excWkb = Nothing
Set excApp = Nothing
End Sub

Public Function OpenOutlookFolder(strFolderPath As String) As Outlook.MAPIFolder
Dim arrFolders As Variant
Dim varFolder As Variant
Dim bolBeyondRoot As Boolean

On Error Resume Next
If strFolderPath = "" Then
Set OpenOutlookFolder = Nothing
Else
Do While Left(strFolderPath, 1) = "\"
strFolderPath = Right(strFolderPath, Len(strFolderPath) - 1)
Loop
arrFolders = Split(strFolderPath, "\")
For Each varFolder In arrFolders
Select Case bolBeyondRoot
Case False
Set OpenOutlookFolder = Outlook.Session.Folders(varFolder)
bolBeyondRoot = True
Case True
Set OpenOutlookFolder = OpenOutlookFolder.Folders(varFolder)
End Select
If Err.Number <> 0 Then
Set OpenOutlookFolder = Nothing
Exit For
End If
Next
End If
On Error GoTo 0
End Function

Function GetSMTPAddress(Item As Outlook.MailItem, intOutlookVersion As Integer) As String
Dim olkSnd As Outlook.AddressEntry
Dim olkEnt As Object

On Error Resume Next
Select Case intOutlookVersion
Case Is < 14
If Item.SenderEmailType = "EX" Then
GetSMTPAddress = SMTPEX(Item)
Else
GetSMTPAddress = Item.SenderEmailAddress
End If
Case Else
Set olkSnd = Item.Sender
If olkSnd.AddressEntryUserType = olExchangeUserAddressEntry Then
Set olkEnt = olkSnd.GetExchangeUser
GetSMTPAddress = olkEnt.PrimarySmtpAddress
Else
GetSMTPAddress = Item.SenderEmailAddress
End If
End Select
On Error GoTo 0
Set olkSnd = Nothing
Set olkEnt = Nothing
End Function

Function GetOutlookVersion() As Integer
Dim arrVer As Variant
arrVer = Split(Outlook.Version, ".")
GetOutlookVersion = arrVer(0)
End Function

Function SMTPEX(olkMsg As Outlook.MailItem) As String
Dim olkPA As Outlook.propertyAccessor
On Error Resume Next
Set olkPA = olkMsg.propertyAccessor
SMTPEX = olkPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x5D01001E")
On Error GoTo 0
Set olkPA = Nothing
End Function

手順 3: VBA コードをカスタマイズする

  1. 上記コード内の「destination_folder_path」を、実際のファイルパス(例:「)C:\Users\DT168\Documents\TEST」)に置き換えてください。
  2. your_email_account\folder\subfolder_1」および「your_email_account\folder\subfolder_2」を、実際のOutlook のファイルパス(例:「)Kelly@extendoffice.com\Inbox\A」および「Kelly@extendoffice.com\Inbox\B」)に置き換えてください。
    doc-export-subfolders-to-excel-1

手順 4: コードを実行する

「F5」キーを押すか「実行」ボタンをクリックしてコードを実行し、「Outlook フォルダーをExcel にエクスポート」ダイアログボックスが表示されたら「OK」をクリックしてください。これにより、指定したすべてのフォルダーやサブフォルダー内のメールがExcel ワークブックにエクスポートされます。
doc-export-subfolders-to-excel-3

デメリット:

  • 複雑なセットアップ:VBA の動作に関する知識と慎重なコード調整が必要です。
  • エラーが発生しやすい:カスタマイズ時のちょっとしたミスが、エラーや不完全なエクスポートを引き起こす可能性があります。
  • 時間がかかる:素早いエクスポートや頻繁なエクスポートには向いていません。

一括処理でメール管理を革新しましょう!

繰り返しのメール作業に疲れていませんか?Kutools for Outlookなら、ワークフローを効率化し、貴重な時間を節約できる「一括処理」機能をご利用いただけます。

  • 🌟複数メールへの返信:テンプレートを使えば、一括返信がラクラクで手間いらず!
  • 📧個別転送:複数のメールを添付ファイルではなく、通常のメッセージとして転送できます。
  • 📝多彩な形式で保存可能!メールを PDF、Word、Excel など、さまざまな形式に一度にエクスポートできます!
Kutools for Outlook 一括処理機能

今日からKutools for Outlook をお試しください


Kutools for Outlook を使用してフォルダーやサブフォルダーからメールをExcel にエクスポートする 👍

より迅速で手間をかけずにメールを保存したい方には、「Kutools for Outlook」の「選択したメールをさまざまな形式でファイルとして保存」機能がおすすめです。そのシンプルさ、スピード、汎用性から、この方法を強く推奨します。少量のメールでも大規模なデータセットでも、Kutools なら最小限の手間でシームレスに操作できます。

Outlook の非効率さにサヨナラしましょう!Kutools for Outlook なら、メールの一括処理がもっと簡単になります。今なら30 日間の無料トライアル付き!Kutools for Outlook を今すぐダウンロード!

手順 1: フォルダーまたはサブフォルダーを選択する

エクスポートしたいメールが含まれるフォルダーまたはサブフォルダーに移動し、「Ctrl+A」を押して、リスト内のすべてのメールを選択します。

手順 2: 「選択したメールをさまざまな形式でファイルとして保存」機能にアクセスする

「Kutools」>「一括処理」>「選択したメールをさまざまな形式でファイルとして保存」をクリックしてください。

doc-export-subfolders-to-excel-4

手順 3: エクスポート設定を構成する

  1. 「他のファイルとしてメールを保存」ダイアログボックスで、ファイルの保存先フォルダーを選択してください。
  2. 「Excel 形式」オプションを選択してください。
  3. 「保存内容」セクションで、エクスポートするメールの具体的な内容(例:ヘッダー、本文など)を選択してください。
    doc-export-subfolders-to-excel-5

手順 4: エクスポートを完了する

「OK」をクリックするとエクスポート処理が開始され、完了後、指定したフォルダーにすべてのメールが個別のExcel ファイルとして保存されます。

doc-export-subfolders-to-excel-6

メリット:

  • 高速で直感的:技術スキルは不要!数回クリックするだけで、メールをExcel にエクスポートできます。
  • カスタマイズ可能な出力:必要に応じて、特定のファイル形式とその内容を自由に選べます。
  • エラーのない処理:VBA 方式に伴う複雑さや潜在的なエラーを回避できます。
  • プロフェッショナルな結果:整理された記録の作成やデータの効率的な共有に最適です。
注: 「選択したメールをさまざまな形式でファイルとして保存」機能をKutools for Outlook で使用するには、まずKutools for Outlookをダウンロードしてインストールしてください。

最高の Office 生産性ツール

まったく新しいKutools for Outlook を、100 以上の驚きの機能とともに体験しましょう!今すぐダウンロード!

🤖KUTOOLS AI高度な AI 技術を活用して、メールの返信、要約、最適化、拡張、翻訳、作成など、あらゆる操作をラクラクこなします。

📧メール自動化自動返信(POP および IMAP 対応)/メールのスケジュール送信/メール送信時にルールに基づいて自動 CC/BCC/自動転送(高度なルール)/自動で挨拶文を追加/複数の宛先を持つメールを個別のメッセージに自動分割...

📨メール管理メールの取り消し/件名などを基準に詐欺メールをブロック/重複したメールを削除/高度な検索/フォルダーを整理...

📁添付ファイルプロ一括保存/一括分離/一括圧縮/自動保存/自動的に切り離す/自動圧縮...

🌟インターフェースの魅力😊さらに美しくクールな絵文字を多数収録/重要なメールが届いた際に通知/Outlook を閉じる代わりに最小化...

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

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

Kutools はお好みの言語でお使いいただけます!英語、スペイン語、ドイツ語、フランス語、中国語をはじめ、40 以上の言語をサポートしています!

ワンクリックでKutools for Outlook の機能を即解放!今すぐダウンロードして、効率を飛躍的にアップさせましょう!

kutools for outlook features1kutools for outlook features2

🚀 ワンクリックダウンロード — 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