範例下載

E134-在Excel內使用AI協助自動化處理,一鍵生成工作表目錄(完成).xlsm

E134-在Excel內使用AI協助自動化處理,一鍵生成工作表目錄(練習).xlsx

色碼錶

色碼表

自動生成工作表名稱,不帶超連結

<aside> 🔔

Prompt:請提供我VBA語法,讓我可以動態抓取每一張工作表的名稱,從A1開始放置,每一次放置之前,先清除A欄所有的資料

</aside>

Sub ListSheetNames()
    Dim ws As Worksheet
    Dim currentSheet As Worksheet
    Dim i As Integer

    ' Set the current worksheet where names will be listed
    Set currentSheet = ThisWorkbook.Sheets("動態目錄作法")
    
    ' Clear column A
    currentSheet.Columns("A").Clear

    ' Start putting sheet names in A1
    i = 1

    ' Loop through all sheets in the workbook
    For Each ws In ThisWorkbook.Sheets
        ' Add sheet name to the current sheet
        currentSheet.Cells(i, 1).Value = ws.Name
        i = i + 1
    Next ws
End Sub

自動生成工作表名稱,帶有超連結(接續上一題)

<aside> 🔔

Prompt:修改此VBA語法,點按工作表名稱之後,可以超連結到對應的工作表A1位置

</aside>

Sub ListWorksheetNamesWithHyperlinks()
    Dim ws As Worksheet ' 用於存放每個工作表的變數
    Dim currentSheet As Worksheet ' 用於存放目前的工作表
    Dim i As Integer ' 用於追蹤行數的變數
    
    ' 將目前的工作表設為變數 currentSheet
    Set currentSheet = ActiveSheet
    
    ' 清空目前工作表 A 列的所有內容
    currentSheet.Columns("A").ClearContents
    
    ' 初始化行數為 1(從第一行開始)
    i = 1
    
    ' 遍歷目前活頁簿內的所有工作表
    For Each ws In ThisWorkbook.Worksheets
        ' 在目前工作表的 A 列插入工作表名稱並建立超連結
        currentSheet.Hyperlinks.Add Anchor:=currentSheet.Cells(i, 1), _
            Address:="", SubAddress:="'" & ws.Name & "'!A1", _
            TextToDisplay:=ws.Name
        ' 將行數加 1,移動到下一行
        i = i + 1
    Next ws
End Sub

程式碼語法解釋:

1. 宣告變數

vba複製
Dim ws As Worksheet
Dim currentSheet As Worksheet
Dim i As Integer

2. 取得目前工作表

vba複製
Set currentSheet = ActiveSheet