Hi all ! I'm trying to merge all my sheet in one , and make automatically updatable using a VBA code .
I found this code , it merges all sheets into one "Target" sheet , but deletes the old "Target"sheet. the thing is if I add funtions in the Target sheet , I'll lost them if I run the VBA code to merge the sheets a second time.
I'm trying to change it , but my skills in VBA are very limited and every time I change something it doesn't work . what I want to do , is make it instead of deleting the old "Target" sheet and making a new one , update the already existing one with all sheets data (including new sheets) and then delete duplicated lines .
any suggestion help is appreciated .
sorry for my english ^^" .
I found this code , it merges all sheets into one "Target" sheet , but deletes the old "Target"sheet. the thing is if I add funtions in the Target sheet , I'll lost them if I run the VBA code to merge the sheets a second time.
Code:
Sub CombineSheets()
'This macro will copy all rows from the first sheet
'(including headers)
'and on the next sheets will copy only the data
'(starting on row 2)
Dim i As Integer
Dim j As Long
Dim SheetCnt As Integer
Dim lstRow1 As Long
Dim lstRow2 As Long
Dim lstCol As Integer
Dim ws1 As Worksheet
With Application
.DisplayAlerts = False
.EnableEvents = False
.ScreenUpdating = False
End With
On Error Resume Next
'Delete the Target Sheet on the document (in case it exists)
Sheets("Target").Delete
'Count the number of sheets on the Workbook
SheetCnt = Worksheets.Count
'Add the Target Sheet
Sheets.Add after:=Worksheets(SheetCnt)
ActiveSheet.Name = "Target"
Set ws1 = Sheets("Target")
lstRow2 = 1
'Define the row where to start copying
'(first sheet will be row 1 to include headers)
j = 1
'Combine the sheets
For i = 1 To SheetCnt
Worksheets(i).Select
'check what is the last column with data
lstCol = ActiveSheet.Cells(1, Activesheet.Columns.Count).End(xlToLeft).Column
'check what is the last row with data
lstRow1 = ActiveSheet.Cells(activesheet.rows.count, "A").End(xlUp).Row
'Define the range to copy
Range("A" & j, Cells(lstRow1, lstCol)).Select
'Copy the data
Selection.Copy
ws1.Range("A" & lstRow2).PasteSpecial
Application.CutCopyMode = False
'Define the new last row on the Target sheet
lstRow2 = ws1.Cells(65536, "A").End(xlUp).Row + 1
'Define the row where to start copying
'(2nd sheet onwards will be row 2 to only get data)
j = 2
Next
With Application
.DisplayAlerts = True
.EnableEvents = True
.ScreenUpdating = True
End With
Sheets("Target").Select
Cells.EntireColumn.AutoFit
Range("A1").Select
End Sub
I'm trying to change it , but my skills in VBA are very limited and every time I change something it doesn't work . what I want to do , is make it instead of deleting the old "Target" sheet and making a new one , update the already existing one with all sheets data (including new sheets) and then delete duplicated lines .
any suggestion help is appreciated .
sorry for my english ^^" .