
下面的Excel文件,包含多个工作表,如下所示:

用一段VBA代码,一键提取所有工作表表名,放在一张新的工作表。随着工作表的减少或者增加,在点击“按扭”后,可以自动重新提取目录。效果如下:

操作步骤如下:
第一步:在“1月份”工作表前面插入一张空白工作表,重命名为:目录
第二步:在“目录”工作表标签上,点击右键,选择“查看代码”

第三步:查看代码会激活VBE编辑器界面,点击插入→模块,并且复制以下代码到右边编辑区。
Sub 提取表名()
Dim sht As Worksheet, myRange As Range, mycol%, myrow%
On Error GoTo 100
Set myRange = Application.InputBox("只能选一个单元格!!!", "选择目录起始单元格", , , , , , 8)
If myRange.Count <> 1 Then Exit Sub
myrow = myRange.Row
mycol = myRange.Column
With myRange.Resize(500, 1)
.ClearContents
.NumberFormat = "@"
End With
myRange = " 目录"
For Each sht In Sheets
If sht.Name <> ActiveSheet.Name Then
myrow = myrow + 1
Set Rng = Cells(myrow, mycol)
Rng.Value = sht.Name
ActiveSheet.Hyperlinks.Add anchor:=Rng, _
Address:="", SubAddress:="'" & sht.Name & "'!a1", TextToDisplay:=sht.Name
End If
Next
100:
End Sub

第四步:点击“保存“按钮,弹出的另存为“对话框,选择文件保存类型为:Excel启用宏的工作薄,保存即可。

第五步:关闭VBE编辑器,回到Excel界面。
第六步:插入一个任意形状,输入一些提示文字,截图如下:

第七步:点击形状,右键选择“指定宏”。

第八步:选择我们上面在模块1录入的“提取表名”的代码,确定。

第九步:点击按钮,弹出的选择目录起始单元格”,我们点击B2单元格,点击确定,程序即可为我们自动添加所有工作表名称。

第十步:结果如下图所示:

当以后工作表增加或减少时,点击按钮自动刷新