Sub copy_data()
Dim fpath As String
Dim shname As String
Dim fext As String
Dim ftc As String 'File To Copy
Dim wb As Workbook
Dim mfile As Workbook 'masterfile
Dim msheet As String 'master sheet of master file
Dim lrm As Long 'last row of master file
Dim lrc As Long 'last row of file to copy
Dim FPicker As FileDialog
'disable some stuff to speed things up
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
'set master file
Set mfile = ActiveWorkbook
'set master sheet > change to your master sheet name. Don't remove quotes.
msheet = "master"
'sheet name of source file to be copied > change to your source sheet name. Don't remove quotes.
shname = "Sheet1"
'find last row with data
With mfile.Worksheets(msheet)
lrm = .Range("A" & Rows.Count).End(xlUp).Row
End With
'get files-to-copy
Set FPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FPicker
.Title = "Select Source Folder"
.AllowMultiSelect = False
If .Show = 0 Then Exit Sub
fpath = .SelectedItems(1) & "\"
End With
'pick all excel files in a chosen folder
fext = "*.xls*"
'file to process
ftc = Dir(fpath & fext)
Do While ftc <> ""
Set wb = Workbooks.Open(Filename:=fpath & ftc)
'copy from row 2 to last row with data
With wb.Worksheets(shname)
lrc = .Range("C" & Rows.Count).End(xlUp).Row
With .Range("C2:C" & lrc)
.Select
.Copy
End With
End With
'get last row of data in master file and paste
With mfile.Worksheets(msheet)
lrm = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A" & lrm + 1).PasteSpecial (xlPasteAll)
End With
'close source workbook
wb.Close SaveChanges:=False
'pick next file to copy
ftc = Dir
Loop
'restore settings preMacro
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
'Call this macro again, and again, and again until user clicks Cancel in a dialog box
Call copy_data
End Sub