You are on page 1of 1

Option Explicit

Public Sub CombineMultipleCSV()



Dim sFileArray As Variant
Dim sFile As Variant
Dim sOutFile As Variant
Dim sFileCount As Integer
Dim inFH As Integer
Dim outFH As Integer
Dim sRecord As String
Dim dtStart As Date

sFileArray = Application.GetOpenFilename( _
FileFilter:="Comma-separated values (*.csv), *.csv, Text files (*.txt), *
.txt", _
FilterIndex:=1, MultiSelect:=True)
If Not IsArray(sFileArray) Then Exit Sub

sFileCount = UBound(sFileArray) - LBound(sFileArray) + 1
If UBound(sFileArray) = LBound(sFileArray) Then
MsgBox "You have only selected one input file!" & Space(10), vbOKOnly + vbEx
clamation
Exit Sub
End If

sOutFile = Application.GetSaveAsFilename(FileFilter:="Comma-separated values (
*.csv), *.csv")
If sOutFile = "False" Then Exit Sub

If Dir(sOutFile) <> "" Then Kill sOutFile

dtStart = Now()

Close
outFH = FreeFile()
Open sOutFile For Append As #outFH
For Each sFile In sFileArray
inFH = FreeFile()
Open sFile For Input As #inFH
Do Until EOF(inFH)
Line Input #inFH, sRecord
Print #outFH, sRecord
Loop
Close #inFH
Next sFile
Close #outFH

MsgBox "Finished: " & CStr(sFileCount) & " files combined." & Space(10) & vbCr
Lf & vbCrLf _
& "Output file: " & sOutFile & Space(10) & vbCrLf & vbCrLf _
& "Run time: " & Format(Now() - dtStart, "hh:nn:ss") & Space(10), vbOKOnl
y + vbInformation

End Sub

You might also like