Sub SortSheetsByName()
Dim wsh As Worksheet, i As Long
With CreateObject("System.Collections.ArrayList")
For Each wsh In ThisWorkbook.Worksheets
.Add wsh.Name
Next
.Sort
For i = 0 To .Count - 2
Sheets(.Item(i + 1)).Move , Sheets(.Item(i))
Next
End With
End Sub