I am writing some code for splitting up an excel sheet by a specific column into separate workbooks. My code works but is really slow (It should create 28 separate files and takes around 10 min per file). What can I do to make it perform better? Is there a way to save some calculation time?
Sub Split()
Dim wswb As String
Dim wssh As String
Dim path As String
Worksheets("Sheet1").Activate
wswb = ActiveWorkbook.Name
wssh = ActiveSheet.Name
path = Worksheets("Start").Range("H6").Value
Columns("H").Copy
Worksheets("Settings").Activate
Range("A1").PasteSpecial
Columns("A").RemoveDuplicates Columns:=1, Header:=xlYes
vCounter = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To vCounter
    vFilter = Sheets("Settings").Cells(i, 1)
    Sheets(wssh).Activate
    ActiveWorkbook.Worksheets("Sheet1").AutoFilterMode = False
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=8, Criteria1:=vFilter
    Cells.Copy
    Workbooks.Add
    Range("A1").PasteSpecial
    Worksheets("Sheet1").Name = "OTD"
    Sheets.Add After:=ActiveSheet
    ActiveCell.FormulaR1C1 = ""
    Sheets("Sheet2").Select
    Sheets("Sheet2").Name = "PPM"
    Sheets("OTD").Select
    If vFilter <> "" Then
        ActiveWorkbook.SaveAs path & "OTD_PPM_Report_" & Format(DateSerial(Year(Date), month(Date) - 1, 1), "mmm_yyyy") & "_" & Range("I2").Value & ".xlsx"
    End If
    ActiveWorkbook.Close
    Workbooks(wswb).Activate
Next i
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=8
End Sub
 
    