バイナリレベルでファイルをコピーし結合する

バイナリレベルでファイルをコピーし結合する

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

実行手順

  1. LoafFromFileメソッドでテキストファイルの内容を読み込む
    Streamオブジェクト.LoadFromFile 読込元ファイル(フルパス)
  2. 読み込んだテキストファイルの内容を保存用Streamオブジェクトに転記
    保存用Streamオブジェクト.WriteText データを読み込んだ Stream オブジェクト.ReadText

1行目(見出し)をスキップする
データを読み込んだ Stream オブジェクト.SkipLine

結合元ファイル

実行結果