In this article, you will learn how to Create Auto Table of Contents in Excel for any active workbook using VBA. We have created VBA code which you can put in your personal macro.
Create Auto Table of Contents in Excel
Below is the code to create the Table of Contents –
Option Explicit
Sub Create_TableOfContents()
'Check is workbook is protected
If ActiveWorkbook.ProtectStructure = True Or ActiveWorkbook.ProtectWindows = True Then
MsgBox "Workbook is protected. Please unprotect it first", vbCritical
Exit Sub
End If
Dim sh As Worksheet
Set sh = ActiveWorkbook.Sheets.Add(before:=ActiveWorkbook.Sheets(1))
sh.Range("A1").Value = "Table of Contents"
sh.Range("A2").Value = "S.No."
sh.Range("B2").Value = "Worksheet"
Dim lr As Integer
Dim i As Integer
For i = 2 To ActiveWorkbook.Worksheets.Count
If ActiveWorkbook.Worksheets(i).Visible = xlSheetVisible Then
lr = sh.Range("A" & Application.Rows.Count).End(xlUp).Row
sh.Range("A" & lr + 1).Value = lr - 1
sh.Range("B" & lr + 1).Value = ActiveWorkbook.Sheets(i).Name
sh.Hyperlinks.Add Anchor:=sh.Range("B" & lr + 1), Address:="", SubAddress:="'" & ActiveWorkbook.Sheets(i).Name & "'!A1", ScreenTip:="Click to go to " & ActiveWorkbook.Sheets(i).Name, TextToDisplay:=ActiveWorkbook.Sheets(i).Name
End If
Next i
ActiveWindow.DisplayGridlines = False
sh.Range("A:A").ColumnWidth = 7
sh.Range("B:B").ColumnWidth = 30
With sh.Range("A1:B1")
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Font.Size = 12
.Font.Bold = True
End With
With sh.Range("A2:B" & i)
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.Font.Size = 9
End With
sh.Range("A2:B2").Interior.ColorIndex = 15
On Error Resume Next
sh.Name = "Table of Contents"
On Error GoTo 0
End Sub
Below is the example of Table of Contents.

Click here to download the Practice file-
Watch the step by step video tutorial:
Visit our YouTube channel to learn step-by-step video tutorials


