Hello chaps,
Sorry to butt in - if this thread is till running.I have been working with what I think it is a similar situation, perhaps you may find this interesting amd you may also be able to help me tidy up my code as it takes ages to run when there is lot of data loaded in my tool.
It may be useful if you want to copy multiple worksheets to your currentworksheet, to initiate the load from a list box and have a load button once you have selected the worksheets you want to copy across. This code will find the first available row (blank) to add the new data, if you are interested I can show you the other subs such as FindEnd etc, although they are quite simple. Forgive any messy code, I am not an expert.
Private Sub LoadCDRCollector_Click()
Dim strFileNamePrefix As String
Dim strMsg As String
Dim i As Integer
Dim strDate As Style
Dim strMonth As String
Dim strSheetName As String
Dim iQuery As Integer
Dim strFileName As String
Dim iQStart As Integer
Dim strSortColumn As String
Dim iColumn As Integer
Dim strLoadedFolder As String
Dim strCurrentWorkbook As String
Dim NewSheet As Worksheet
Dim bNewData As Boolean
Dim strSourceSheet As String
Dim n As Integer
Dim j As Integer
Dim oSourceSheet As Object
Dim oSourceWorkSheet As Object
strFileNamePrefix = cFolderPath & cCDRCollectorFolder
strSourceSheet = "Queryman"
strSheetName = "CDRCollector"
strLoadedFolder = "Loaded\"
'Initialise new data flag
bNewData = False
'Get the files from the list box
For i = 0 To ReconControlBox.CDRCollector.ListCount - 1
If ReconControlBox.CDRCollector.Selected(i) Then 'If a file is selected
strFileName = ReconControlBox.CDRCollector.List(i)
iQStart = InStr(1, strFileName, "q"

'Find the start of the query
If iQStart = 0 Then
MsgBox "A file name " & strFileName & " with an invalid format was found - exiting load"
Exit Sub
End If
iQuery = CInt(Mid(strFileName, iQStart + 1, Len(strFileName) - 4 - iQStart + 1))
strMonth = getTextMonth(Mid(strFileName, 5, 2))
If strMonth <> "Not found" Then
'Check if a sheet exist for this month
'Activate the workbook
ThisWorkbook.Activate
If Not (SheetExists(strSheetName & strMonth)) Then 'If the sheet doesn't exist then create a new one,
'add the headings, name a range for the last date, and then create the pivot table
'Get the workbook name
strCurrentWorkbook = ThisWorkbook.Name
'Add a new worksheet
Set NewSheet = Workbooks(strCurrentWorkbook).Worksheets.Add
NewSheet.Name = strSheetName & strMonth
'Insert the headings at the top of the sheet
InsertHeadings 1, 57, _
"Switch ID,Trunk ID,Total Calls,Date, ," & _
"Switch ID,Trunk ID,Total Seconds,Date, ," & _
"Switch ID,Total_iy3,Date, ," & _
"Switch ID,Total_id1_inbound,Date, ," & _
"Switch ID,Total_id1_outbound,Date, ," & _
"Switch ID,Total_ia1_iy1,Date, ," & _
"Switch ID,Total_id2,Date, ," & _
"Switch ID,Total_ia2_iy2,Date, ," & _
"Switch ID,Total_id1_inbound_duration,Date, ," & _
"Switch ID,Total_id1_outbound_duration,Date, ," & _
"Switch ID,Total_ia1_iy1_duration,Date, ," & _
"Switch ID,Total_id2_duration,Date, ," & _
"Switch ID,Total_ia2_iy2_duration,Date, ," & _
"Switch ID,Total_id1_inbound_Arbor,Date"
'Name the ranges for the source data
NewSheet.Range("A

"

.Name = strSheetName & "_" & strMonth & "_Q1" & "_SourceData"
NewSheet.Range("F:I"

.Name = strSheetName & "_" & strMonth & "_Q2" & "_SourceData"
NewSheet.Range("K:M"

.Name = strSheetName & "_" & strMonth & "_Q3" & "_SourceData"
NewSheet.Range("O:Q"

.Name = strSheetName & "_" & strMonth & "_Q4" & "_SourceData"
NewSheet.Range("S:U"

.Name = strSheetName & "_" & strMonth & "_Q5" & "_SourceData"
NewSheet.Range("W:Y"

.Name = strSheetName & "_" & strMonth & "_Q6" & "_SourceData"
NewSheet.Range("AA:AC"

.Name = strSheetName & "_" & strMonth & "_Q7" & "_SourceData"
NewSheet.Range("AE:AG"

.Name = strSheetName & "_" & strMonth & "_Q8" & "_SourceData"
NewSheet.Range("AI:AK"

.Name = strSheetName & "_" & strMonth & "_Q9" & "_SourceData"
NewSheet.Range("AM:AO"

.Name = strSheetName & "_" & strMonth & "_Q10" & "_SourceData"
NewSheet.Range("AQ:AS"

.Name = strSheetName & "_" & strMonth & "_Q11" & "_SourceData"
NewSheet.Range("AU:AW"

.Name = strSheetName & "_" & strMonth & "_Q12" & "_SourceData"
NewSheet.Range("AY:BA"

.Name = strSheetName & "_" & strMonth & "_Q13" & "_SourceData"
NewSheet.Range("BC:BE"

.Name = strSheetName & "_" & strMonth & "_Q14" & "_SourceData"
'Add the pivot tables
AddCDRCollectorPivotTables strMonth
Else
Set oDestinationSheet = ThisWorkbook.Worksheets(strSheetName & strMonth)
End If 'Sheetexists
Select Case iQuery
Case 1, 2
strSortColumn = "D"
iColumn = 5 * (iQuery - 1) + 1
Case 3
oDestinationSheet.Activate
strSortColumn = "C"
iColumn = 4 * (iQuery - 1) + 3
iStartRow = FindEnd(iColumn)
'Create the xls file name the file to be used
strSourceWorksheet = strSourceSheet
strSourceWorkbook = strFilePrefix & strFileName
If oFSO.FileExists(strSourceWorkbook) Then 'a file is found
'Open the source workbook
OpenSourceWorkBook (strSourceWorkbook)
Worksheets(strSourceWorksheet).Activate
'Set oSourceSheet = Workbooks(strSourceWorkbook).Worksheets(strSourceWorkSheet)
Set oSourceSheet = ActiveSheet
'Activate the sheet that is going to be used
oSourceSheet.Activate
'Set the start row for the source data
n = 2
'Set the start row for the destination data
j = iStartRow
Do While oSourceSheet.Cells(n, 1) <> ""
oDestinationSheet.Cells(j, iColumn).Value = "CKP.jupiter.ods." & strCDRType & ".calls"
oDestinationSheet.Cells(j, iColumn + 1).Value = oSourceSheet.Cells(n, 3)
oDestinationSheet.Cells(j, iColumn + 2).Value = iDay
j = j + 1
n = n + 1
Loop
Case 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
strSortColumn = "C"
iColumn = 4 * (iQuery - 1) + 3
Case Else
MsgBox "A file name " & strFileName & " with an invalid format was found - exiting load"
Exit Sub
End Select
CopyDataToSheet strFileNamePrefix, strFileName, strSourceSheet, strSortColumn, strSheetName, strMonth, iColumn, strLoadedFolder
bNewData = True
Else
MsgBox "A file name " & strFileName & " with an invalid month was found - the file was not loaded"
End If 'strMonth
End If 'File selected
Next
If bNewData Then
RefreshCDRCollectorPivotTables strMonth
End If
'Reload the dialogue box
KillReconControlBox
ShowReconControlBox
End Sub 'LoadCDRCollector_Click()
The copy data to sheet function
Sub CopyDataToSheet(strFileNamePrefix, strSourceWorkbook, strSourceSheet, strSortColumn, strSheetName, strMonth, iColumn, strLoadedFolder)
'Sub to copy data from a source sheet to a named sheet (strSheetName) for a month (strMonth)
'The data is sorted before is it copied
'After the copy, the source file is moved to the folder specified in strLoadedFolder
'If "NoMove" is specified as the folder name then it is not moved
Dim strCurrentWorkbook As String
Dim oSourceWorkSheet As Worksheet
Dim oDestinationWorksheet As Worksheet
Dim oFSO As Object
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Get the current workbook name
strCurrentWorkbook = ThisWorkbook.Name
'Open the source workbook
OpenSourceWorkBook (strFileNamePrefix & strSourceWorkbook)
Set oDestinationWorksheet = Workbooks(strCurrentWorkbook).Worksheets(strSheetName & strMonth)
'Sort the data before copying
Worksheets(strSourceSheet).Range("A1"

.Sort _
Key1:=Worksheets(strSourceSheet).Columns(strSortColumn), Order1:=xlAscending, _
Key2:=Worksheets(strSourceSheet).Columns("A"

, _
Header:=xlGuess
'Copy the data
ActiveSheet.UsedRange.Copy
'Activate the destination sheet
oDestinationWorksheet.Activate
'Paste the values after any existing data
Cells(FindEnd(iColumn), iColumn).PasteSpecial Paste:=xlValues
Workbooks(strSourceWorkbook).Close
If strLoadedFolder <> "NoMove" Then
'Move the file to the completed folder
' Set up global data.This line sets up a variable to access the file system
Set oFSO = CreateObject("Scripting.FileSystemObject"

oFSO.MoveFile strFileNamePrefix & strSourceWorkbook, strFileNamePrefix & strLoadedFolder
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub 'CopyDataToSheet