ConcatenateFiles - Merge multiple text files in one
' Concatenate a variable number of text files into a single result file
'
' Params:
' - ResultFile: the complete path of the result file you want to create
' - Separator: a string that is written when a file is added to the result
' file.
' Note: this string can contain the #FilePath# tag that will be replaced
' with the path of the file being added
' - SourceFiles: a sequence of files whose content will be concatenated
'
' Example:
' ConcatenateFiles "D:\res.txt", "------ NEW FILE: #FilePath# ------",
' "D:\1.txt", "D:\2.txt", "D:\3.txt"
Private Sub ConcatenateFiles(ByVal ResultFile As String, _
ByVal Separator As String, ParamArray SourceFiles() As Variant)
Dim FSO As New FileSystemObject
Dim fsSourceStream As TextStream
Dim fsResStream As TextStream
Dim sSeparator As String
Dim i As Integer
On Error Resume Next
' create a new file
Set fsResStream = FSO.OpenTextFile(ResultFile, ForWriting, True)
' for each source file in the input array
For i = 0 To UBound(SourceFiles)
' add the separator first (replacing the special tag for the file path)
sSeparator = Replace(Separator, "#FilePath#", SourceFiles(i))
fsResStream.Write sSeparator & vbCrLf
' open the file in read mode
Set fsSourceStream = FSO.OpenTextFile(SourceFiles(i), ForReading)
' add its content + a blank line to the result file
fsResStream.Write fsSourceStream.ReadAll & vbCrLf
' close this source file
fsSourceStream.Close
Next i
fsResStream.Close
End Sub