Crear un índice de hojas en libro de Excel utilizando VBA

Habrá ocasiones en las que tengamos que trabajar con libros que están conformados por diversas hojas y queramos desplazarnos a alguna de ellas en específico, también puede darse el caso de que queramos listar los nombres de todas las hojas que componen el libro. Siendo alguno de los dos casos antes mencionados la siguiente macro nos será de gran ayuda ya que recorre cada una de las hojas del libro y crea una hoja índice al principio del mismo que contendrá los nombres de todas las hojas y un vínculo para desplazarnos a cada una de ella.

Hay que considerar que el libro puede contener hojas ocultas y por lo tanto estas no las vamos a listar por medio de nuestra macro, aunque si podemos obtener el nombre de las mismas. El código seria el siguiente:


Sub CrearIndice()
Dim Indice As Worksheet
Dim Hoja As Worksheet
Dim Celda As Range

'Eliminar indice previo
On Error Resume Next
Set Indice = ActiveWorkbook.Sheets("Indice")
On Error GoTo 0
Application.DisplayAlerts = False
If Not Indice Is Nothing Then Indice.Delete
Application.DisplayAlerts = True

'Mover indice al inicio
Set Indice = ActiveWorkbook.Sheets.Add
Indice.Move ActiveWorkbook.Sheets(1)
Indice.Name = "Indice"

'Agregar nombre de la hoja y vinculo a la primera celda de la misma
For Each Hoja In ActiveWorkbook.Sheets
  Set Celda = Indice.Range("A" & Hoja.Rows.Count).End(xlUp).Offset(1)
  Celda = Hoja.Name
  Celda.Hyperlinks.Add Celda, "", Hoja.Name & "!A1"
  Hoja.Range("A1") = "Indice"
  Hoja.Range("A1").Hyperlinks.Add Hoja.Range("A1"), "", "Indice!A1"
Next

Indice.Range("A1").Clear
Indice.Activate
End Sub

Adicionalmente les comparto el libro con el código de ejemplo y el vídeo de funcionamiento de dicha macro:


Comentarios