DEV Community

Long Nguyễn Xuân
Long Nguyễn Xuân

Posted on

Tạo mục lục trong excel và Personal macro workbook

bài gồm 2 phần

  1. Tạo mục lục trong excel bằng VBA
  2. Personal macro workbook

tạo mục lục trong excel bằng VBA

1. Alt+F11 > Insert New Module
2. copy&paste code vba bên dưới bỏ vào  
3. Alt+F8 > tận hưởng
Enter fullscreen mode Exit fullscreen mode
Sub CreateTableOfContents()
    Dim ws As Worksheet
    Dim tocSheet As Worksheet
    Dim rowNum As Integer
    Dim linkCell As Range

    ' Check if "Table of Contents" sheet already exists, delete it if so
    On Error Resume Next
    Set tocSheet = ThisWorkbook.Worksheets("Table of Contents")
    If Not tocSheet Is Nothing Then
        Application.DisplayAlerts = False
        tocSheet.Delete
        Application.DisplayAlerts = True
    End If
    On Error GoTo 0

    ' Add a new sheet for the TOC
    Set tocSheet = ThisWorkbook.Worksheets.Add
    tocSheet.Name = "Table of Contents"

    ' Add header
    With tocSheet
        .Cells(1, 1).Value = "Table of Contents"
        .Cells(1, 1).Font.Bold = True
        .Cells(1, 1).Font.Size = 14
    End With

    ' Initialize row number for TOC entries
    rowNum = 3

    ' Loop through all sheets and add to TOC
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Table of Contents" Then
            tocSheet.Cells(rowNum, 1).Value = ws.Name
            tocSheet.Hyperlinks.Add Anchor:=tocSheet.Cells(rowNum, 1), _
                Address:="", SubAddress:="'" & ws.Name & "'!A1", TextToDisplay:=ws.Name
            rowNum = rowNum + 1
        End If
    Next ws

    ' Auto-fit columns
    tocSheet.Columns("A:A").AutoFit

    ' Return to the TOC sheet
    tocSheet.Activate

    MsgBox "Table of Contents created successfully!", vbInformation
End Sub
Enter fullscreen mode Exit fullscreen mode

Personal Macro Workbook

vì việc gửi 1 cái file excel có chứa VBA, đôi khi không được phép (vì vấn đề bảo mật), khách hàng họ sẽ không được phép mở 1 cái file excel có chứa VBA, các hệ thống IT của doanh nghiệp cũng chặn loại file này.

Trong excel có 1 cái rất hay gọi là Personal Macro Workbook PERSONAL.XLSB, chúng ta có thể lưu các đoạn vba thường dùng trong này,

hôm nay (2024-12-16) tìm thử nó, để lưu 1 đoạn macro mới thấy trong Office 365, thì nó không được hiển thị ra, mà phải làm 1 cái mẹo

mẹo "hiển thị PERSONAL.XLSB"

  1. tạo 1 file excel bất kỳ, chọn Files > Options > Customize Ribbon
  2. Checked vào menu Developer
  3. mở Ribbons > Developer > Record Macro
  4. chọn "Store macro in: = Personal Macro Workbook

xem hình
Image description

Image description

Image description

Image description

OK giờ nó đã hiển thị ra rồi, lưu vba cần dùng vào đây thôi.

Image description

Top comments (0)