Thread: Merging files
View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Dave Peterson[_5_] Dave Peterson[_5_] is offline
external usenet poster
 
Posts: 1,758
Default Merging files

How about something like:

Option Explicit
Sub testme()

Dim myFolder As String
Dim dCtr As Long
Dim testStr As String
Dim myFileName As String
Dim DestCell As Range
Dim TmpWkbk As Workbook
Dim MstrWks As Worksheet

myFolder = "C:\my documents\excel\test\"
If Right(myFolder, 1) < "\" Then
myFolder = myFolder & "\"
End If

Set MstrWks = workbooks("master.xls").Worksheets("sheet1")

With MstrWks
Set DestCell = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0)
End With

For dCtr = DateSerial(2005, 2, 2) To DateSerial(2005, 3, 4)
myFileName = myFolder & "cm" & Format(dCtr, "dmmmyyyy") & "bhav.csv"
testStr = ""
On Error Resume Next
testStr = Dir(myFileName)
On Error GoTo 0
If testStr = "" Then
'not found
'comment this line when you're happy
Debug.Print myFileName & " wasn't found"
Else
Set TmpWkbk = Workbooks.Open(Filename:=myFileName)
TmpWkbk.Worksheets(1).UsedRange.Copy _
Destination:=DestCell
TmpWkbk.Close savechanges:=False
With DestCell.Parent
Set DestCell = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0)
End With
End If
Next dCtr

End Sub

This assumes I can use column A to find the next available row.

If you're new to macros, you may want to read David McRitchie's intro at:
http://www.mvps.org/dmcritchie/excel/getstarted.htm

mac_see wrote:

I have a lot of .csv format files in a folder. Columns in each file are same
but not the rows.

I have another .xls file in the same folder with similar columns. I am
looking for a VBA which can copy all records from cm1FEB2005bhav.csv file
into my master.xls file in sheet1, then copy all records from
cm2FEB2005bhav.csv file into my master.xls file in sheet1 just below the
existing data and continue this till cm4MAR2005bhav.csv

If it is a saturday or sunday, the .csv files will not be present.

For example:
Files
cm5FEB2005bhav.csv
cm6FEB2005bhav.csv
will not be present as 5Feb and 6 Feb was saturday and sunday.

Maxi


--

Dave Peterson