この記事でできること
Excel VBAを使用して、指定したフォルダ内にある複数のテキストファイル(.mdや.txtなど)を自動で読み込み、1つのファイルにまとめて出力するためのマクロ(FileSystemObject使用)を紹介します。
想定環境・前提条件
- 動作確認環境: Windows 10 / 11, Microsoft Excel 2013 / 2016 / 2019 / 365 (32bit/64bit)
- VBEの参照設定: 「Microsoft Scripting Runtime」を使用します(コード内でNewキーワードにより初期化するため事前バインディング/遅延バインディングのどちらでも動作しますが、FSOを利用するためファイルシステムコンポーネントが利用可能な環境が必要です)。
VBAマクロの完全なコード
以下のVBAコードを標準モジュールに貼り付けて実行してください。
Sub テストデータ結合()
Dim FSO As New FileSystemObject
Dim Fs As File
Dim ALLStr As String
Dim TS As TextStream
Const F_PATH As String = "C:\TestFolder"
Const OUT_FILE As String = F_PATH & "\TestData.md"
' 出力ファイルが既に存在する場合は一度削除する
If FSO.FileExists(OUT_FILE) = True Then
FSO.DeleteFile (OUT_FILE)
End If
' 指定フォルダ内のファイルを走査
For Each Fs In FSO.GetFolder(F_PATH).Files
' TEXT ファイルの判定(環境によりType文字列が異なる場合があるため拡張子判定への変更も推奨)
If Fs.Type = "TEXT ファイル" Or LCase(FSO.GetExtensionName(Fs.Name)) = "text" Or LCase(FSO.GetExtensionName(Fs.Name)) = "md" Then
Set TS = Fs.OpenAsTextStream(ForReading)
ALLStr = ALLStr & "# テストデータ " & Fs.Name & " 読み込み " & vbCrLf
ALLStr = ALLStr & "---- " & vbCrLf
ALLStr = ALLStr & TS.ReadAll & vbCrLf & vbCrLf
TS.Close
End If
Next Fs
' まとめた文字列を一括書き出し
With FSO.CreateTextFile(OUT_FILE, True)
.Write ALLStr
.Close
End With
MsgBox "テキストの一括結合が完了しました。", vbInformation
End Sub
実行手順
- Excelを開き、
[Alt] + [F11]キーを押してVBE(Visual Basic Editor)を起動します。 - メニューの「挿入」から「標準モジュール」を選択します。
- 上記のコードを貼り付けます。
- 定数
F_PATHに指定するフォルダパス(例:C:\TestFolder)をご自身の環境に合わせて変更します。 [F5]キーを押すか、実行ボタンを押してマクロを実行します。
期待される結果
指定したフォルダ内に存在するテキストファイルの内容がファイル名ヘッダー付きで連結され、C:\TestFolder\TestData.md として出力されます。
典型的な失敗例・トラブルシューート
- ファイルが見つからないエラー:
F_PATHで指定したフォルダが存在しない場合やパスが間違っている場合に発生します。事前にフォルダを作成してください。 - 権限エラー:
C:\直下などの保護されたフォルダに書き込もうとするとエラーになる場合があります。書き込み権限のあるデスクトップやドキュメント内のフォルダを指定してください。
セキュリティ・制約
- 大量のテキストファイルを一度に結合する場合、
ALLStr変数が長大になりメモリを消費することがあります。数GB規模のファイルを扱う場合はLine InputやADODB.Stream等を用いたストリーム処理への変更をご検討ください。
関連リンク・一次情報
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月12日
- 追加この記事で何ができるか、想定環境・前提条件、実行手順およびエラー対策の解説を追加しました。
- 変更HTMLタグや不自然な引用符で崩れていたVBAコードおよび実行結果のサンプルを、読みやすいMarkdownコードブロックに再構成しました。
- 削除リンク切れとなっていた古い外部のダウンロードリンクを削除し、本文側の仕様からコードを再実装できるように整備しました。
