Public Sub subCopyDataFromMultipleSheetsIntoATable()
Dim Ws As Worksheet
Dim objTable As Object
Dim rng As Range
Dim strWorksheets As String
Dim arrSheets() As String
Dim i As Integer
ActiveWorkbook.Save
Set Ws = Worksheets("Tables")
Set objTable = Ws.ListObjects("tblCompany")
strWorksheets = "Source1,Source2,Source3,Source4"
arrSheets = Split(strWorksheets, ",")
For i = LBound(arrSheets) To UBound(arrSheets)
With Worksheets(arrSheets(i))
With .Range("A3:F" & .Range("A" & .Rows.Count).End(xlUp).Row)
Set rng = fncResizeTable(objTable, .Rows.Count)
rng.Value = .Value
End With
End With
Next i
ActiveWorkbook.Save
End Sub
Public Function fncResizeTable(objTable As Object, intAddRows As Integer) As Range
Dim lngRows As Long
Dim lngColumns As Long
Dim lngStartRow As Long
Dim lngStartColumn As Long
With objTable
lngRows = .DataBodyRange.Rows.Count
lngColumns = .DataBodyRange.Columns.Count - 1
lngStartRow = .Range.Cells(1).Row
lngStartColumn = .Range.Cells(1).Column
.Resize Range(Cells(lngStartRow, lngStartColumn), Cells(lngStartRow + lngRows + intAddRows, lngStartColumn + lngColumns).Address)
End With
Set fncResizeTable = Worksheets(objTable.Parent.Name).Cells(lngStartRow, lngStartColumn).Offset(lngRows + 1, 0).Resize(intAddRows, lngColumns + 1)
End Function