【VBA】フォルダ内にあるテキストファイルの一括結合マクロの作成と、Markedのテストテキストデータの結合

プログラミング・Web開発カテゴリを表すパンダのイラスト プログラミング・Web開発

この記事でできること

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

実行手順

  1. Excelを開き、[Alt] + [F11] キーを押してVBE(Visual Basic Editor)を起動します。
  2. メニューの「挿入」から「標準モジュール」を選択します。
  3. 上記のコードを貼り付けます。
  4. 定数 F_PATH に指定するフォルダパス(例: C:\TestFolder)をご自身の環境に合わせて変更します。
  5. [F5] キーを押すか、実行ボタンを押してマクロを実行します。

期待される結果

指定したフォルダ内に存在するテキストファイルの内容がファイル名ヘッダー付きで連結され、C:\TestFolder\TestData.md として出力されます。

典型的な失敗例・トラブルシューート

  • ファイルが見つからないエラー: F_PATH で指定したフォルダが存在しない場合やパスが間違っている場合に発生します。事前にフォルダを作成してください。
  • 権限エラー: C:\ 直下などの保護されたフォルダに書き込もうとするとエラーになる場合があります。書き込み権限のあるデスクトップやドキュメント内のフォルダを指定してください。

セキュリティ・制約

  • 大量のテキストファイルを一度に結合する場合、ALLStr 変数が長大になりメモリを消費することがあります。数GB規模のファイルを扱う場合はLine InputやADODB.Stream等を用いたストリーム処理への変更をご検討ください。

関連リンク・一次情報

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月12日

  • 追加この記事で何ができるか、想定環境・前提条件、実行手順およびエラー対策の解説を追加しました。
  • 変更HTMLタグや不自然な引用符で崩れていたVBAコードおよび実行結果のサンプルを、読みやすいMarkdownコードブロックに再構成しました。
  • 削除リンク切れとなっていた古い外部のダウンロードリンクを削除し、本文側の仕様からコードを再実装できるように整備しました。

文書情報

記事タイトル
【VBA】フォルダ内にあるテキストファイルの一括結合マクロの作成と、Markedのテストテキストデータの結合
作成日
更新日
Source URL
https://papanda925.com/?p=632

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました