PDA

View Full Version : append csv file with multiple csv files



JohnBX
09-03-2015, 07:39 AM
Hi,


I have a folder (inputfolder) which will contain multiple .csv files.

All the .csv files have headers.
Some .csv files may have fewer headers
The headers may not always be in the same order

My goal is to have the 1 master .csv file which will be appended with the .csv files in the inputfolder.
I will create the master file to have all the headers that the multiple .csv files may have.

The code would need to compare the headers in the master csv and then copy each matching column in each input csv , back to the master csv.

I found some code which merges any .csv files found in a given folder, but I cant figure out how to get it to always use the same master file, and also handle the problem of the different headers.

Thanks in advance




Sub ImportCSV()


Dim strSourcePath As String
Dim strDestPath As String
Dim strFile As String
Dim strData As String
Dim x As Variant
Dim Cnt As Long
Dim r As Long
Dim c As Long


Application.ScreenUpdating = False

'Change the path to the source folder accordingly
strSourcePath = "c:\input\"

If Right(strSourcePath, 1) <> "\" Then strSourcePath = strSourcePath & "\"

'Change the path to the destination folder accordingly
strDestPath = "c:\output\"

If Right(strDestPath, 1) <> "\" Then strDestPath = strDestPath & "\"

strFile = Dir(strSourcePath & "*.csv")

Do While Len(strFile) > 0
Cnt = Cnt + 1
If Cnt = 1 Then
r = 1
Else
r = Cells(Rows.Count, "A").End(xlUp).Row + 1
End If
Open strSourcePath & strFile For Input As #1
If Cnt > 1 Then
Line Input #1, strData
End If
Do Until EOF(1)
Line Input #1, strData
x = Split(strData, ",")
For c = 0 To UBound(x)
Cells(r, c + 1).Value = Trim(x(c))
Next c
r = r + 1
Loop
Close #1
Name strSourcePath & strFile As strDestPath & strFile
strFile = Dir
Loop

Application.ScreenUpdating = True

If Cnt = 0 Then _
MsgBox "No CSV files were found...", vbExclamation
End Sub