バイナリレベルでファイルをコピーし結合する
Sub テキストファイルを結合() Dim mySrm As New ADODB.Stream, tmpSrm As New ADODB.Stream Dim myFld As String, myFile As String, Flg As Boolean 'テキストファイルのあるフォルダ myFld = ThisWorkbook.Path & "\txt\" '見出し判別用フラグ Flg = True 'Streamオブジェクトを開く With mySrm .Open .Type = adTypeText .Charset = "shift_jis" End With With tmpSrm .Open .Type = adTypeText .Charset = "shift_jis" End With 'テキストファイルを取得 myFile = Dir(myFld & "4-49_No*.txt") '「4-49_No○.txt」が存在する限り、処理をループ '************************************************************************ '指定したテキストファイルが存在しないとDir関数は長さ「0」 の文字列を返す 'ファイルの読み込み順序はファイル名昇順のようである '************************************************************************ Do While myFile <> "" 'テキストファイルの内容を読み込む tmpSrm.LoadFromFile myFld & myFile '2つめのファイル以降を読み込む時は1行目(見出し)をスキップ If Not Flg = True Then tmpSrm.SkipLine Flg = False '読み込んだデータを保存用のStreamオブジェクトに保存 mySrm.WriteText tmpSrm.ReadText '次のテキストファイルを取得 myFile = Dir Loop 'Streamオブジェクトをファイルとして保存する mySrm.SaveToFile myFld & "4-49_結合ファイル.txt", adSaveCreateOverWrite mySrm.Close: Set mySrm = Nothing tmpSrm.Close: Set tmpSrm = Nothing End Sub
実行手順
- LoafFromFileメソッドでテキストファイルの内容を読み込む
Streamオブジェクト.LoadFromFile 読込元ファイル(フルパス) - 読み込んだテキストファイルの内容を保存用Streamオブジェクトに転記
保存用Streamオブジェクト.WriteText データを読み込んだ Stream オブジェクト.ReadText
1行目(見出し)をスキップする
データを読み込んだ Stream オブジェクト.SkipLine
結合元ファイル
実行結果