El objetivo de esta subrutina simple pero muy útil, generar un índice de todas las hojas que hay en el archivo y a su vez a cada hoja colocarle el hipervínculo que te mande a la hoja principal de índices.

Para el uso de la sibrutina debes a agregar una hoja nueva de cálculo en tu archivo de excel que quieres indexar, esa hoja nueva debe estar completamente vacia y tener la primera posición de izquierda a derecha, dejas esa hoja activa (Imágen A), posteriormente abres el editor de código de Visual Basic for Applications (VBA) , una vez dentro, en un módulo pegas el código de abajo y lo ejecutas.

Ejemplo:
Imagen A:

Imagen A

Imágen B:

Imagen B
{% set var1 %} Sub asignar_link_hoja_mismo_libro() ' Declaración de las variables Dim o As Object Dim th, h As Integer Dim lr As Long Dim rng As Range ' obtener el número total de hojas de excel en el archivo abierto th = Sheets.Count ' en la hoja 1, celda A1 se le asigna el valor de "índice hojas" Sheets(1).Cells(1, 1).Value = "Índice Hojas" ' En esta ciclo se recorre el total de hojas For h = 1 To th ' empezamos la iteración de hojas a partir del indice 2 para obtener el nombre de las hojas. If h > 1 Then ' el nombre de la hoja se coloca en la hoja 1 a partir de la celda 2 Sheets(1).Cells(h, 1).Value = Sheets(h).Name ' se selecciona la hoja para poder asignar el hipervínculo a la hoja 1 Sheets(h).Activate ' colocación del hipervínculo en la hoja activa ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="" & Sheets(1).Name & "!A1" & "", TextToDisplay:="Indice" End If Next h ' Procesos en la hoja 1 Sheets(1).Activate ' del ciclo anterior obtenemos la última fila con registro lr = Sheets(1).Cells(1048576, 1).End(xlUp).Row ' establecemos el rango donde se colocaron los nombres de las hojas del archivo de excel Set rng = Sheets(1).Range(Cells(2, 1), Cells(lr, 1)) 'en este ciclo creamos los hipervínculos For Each o In rng ' creamos el indice por cada nombre de hoja con su respectiva hoja Cells(o.Row, o.Column).Hyperlinks.Add Anchor:=Cells(o.Row, o.Column), Address:="", SubAddress:="'" & o.Value & "'!A1", TextToDisplay:=o.Value Next o ' notificación al usuario del término del programa MsgBox "Se ha creado el índice de hojas de forma exitosa", vbOKOnly, "INDICE HOJAS" End Sub {% endset %} {% with codigo=var1.strip(), isEditable="false" %} {% include 'components/copy-code.html' %} {% endwith %}