We help IT Professionals succeed at work.

Combining csv files

BBlu
BBlu asked
on
I have been asked to combine several text (comma delimited files) into an Excel Workbook for analysis purposes.  They are all the exact same format with the same headings.  Is there an way to combine all files in a folder?
Comment
Watch Question

Dave BaldwinFixer of Problems
CERTIFIED EXPERT
Most Valuable Expert 2014
Commented:
Open the first one in a text editor like Notepad.  I would strongly suggest saving it under a new name immediately so you don't lose anything if there is a problem.  Then open the others and copy and paste them into the end of the first / new file and save them.  If they are exactly the same format, they will all load into Excel at once that way.  If for some reason there actually is a difference, then you will still have the original files that you can use.

Author

Commented:
Thanks, Dave.  I thought of that.  Is that the only way you know of?
This code should get you started. Save the workbook in the same directory as the CSVs. Record a macro to import one of the files and change in the code accordingly. Also change the path and target of the recorded macro.

Option Explicit

Sub FindCSV()
    
    Dim strDocPath As String
    Dim strCurrentFile As String
        
    strDocPath = ThisWorkbook.Path & "\"
    strCurrentFile = Dir(strDocPath & "*.csv*")
    
    Do While strCurrentFile <> ""
        'START OF RECORDED MACRO
        'Change path and destination accordingly
        With ActiveSheet.QueryTables.Add(Connection:= _
                "TEXT;" & ThisWorkbook.Path & "\" & strCurrentFile, Destination:=Range("$A1000000").End(xlUp).Offset(1, 0))
                .Name = "file1_1"
                .FieldNames = True
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = True
                .RefreshOnFileOpen = False
                .RefreshStyle = xlInsertDeleteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .TextFilePromptOnRefresh = False
                .TextFilePlatform = 437
                .TextFileStartRow = 1
                .TextFileParseType = xlDelimited
                .TextFileTextQualifier = xlTextQualifierDoubleQuote
                .TextFileConsecutiveDelimiter = False
                .TextFileTabDelimiter = False
                .TextFileSemicolonDelimiter = False
                .TextFileCommaDelimiter = True
                .TextFileSpaceDelimiter = False
                .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
                .TextFileTrailingMinusNumbers = True
                .Refresh BackgroundQuery:=False
            End With
        'END OF RECORDED MACRO
        strCurrentFile = Dir
    Loop
End Sub

Open in new window

Lee WadwellProject Architect
CERTIFIED EXPERT
Commented:
I would use a combination of DOS command to create a new 'super' file, then open this file in excel and remove the duplicate headers ... see this for instructions http://workawesome.com/productivity/how-to-concatenate-multiple-csv-files-in-excel/

You can use a better directory than c:\ however ... just you the CD command to get to that directory, e.g.
cd c:
cd \path\to\better\directory
Dave BaldwinFixer of Problems
CERTIFIED EXPERT
Most Valuable Expert 2014

Commented:
If you only have to do it once, you'd be done by now.  If you have to do it frequently, then a program is better.
Sudhakar KumarManager IT Delivery- II at Aon
Commented:
You can use simple DOS command to merge multiple csv or text files.

copy *.csv NewCSVFile.csv

Copy all the csv files in a folder and create a batch file copycsv.bat in the same folder and save this command.

Author

Commented:
Thanks, everyone.

Explore More ContentExplore courses, solutions, and other research materials related to this topic.