以下是一个示例程序,可以根据需要进行修改和定制:

Sub 自动生成目录()

'首先定义变量
Dim MyDoc As Document
Dim MyTable As Table
Dim MyRange As Range
Dim MyRow As Row
Dim MyCell As Cell
Dim MyHeading As String
Dim MyPage As Integer

'设置文档对象和页码
Set MyDoc = ActiveDocument
MyPage = 1

'创建目录表格
Set MyTable = MyDoc.Tables.Add(Range:=Selection.Range, NumRows:=1, NumColumns:=2)
With MyTable
    .Borders.Enable = True
    .Borders.InsideLineStyle = wdLineStyleSingle
    .Borders.OutsideLineStyle = wdLineStyleSingle
    .Columns(1).Width = InchesToPoints(1)
    .Columns(2).Width = InchesToPoints(6)
    .Rows(1).Range.Font.Bold = True
    .Rows(1).Range.Font.Size = 12
    .Rows(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With

'查找文档中的标题
For Each MyRange In MyDoc.StoryRanges
    Do
        '根据需要修改标题样式
        If MyRange.Style = '标题 1' Or MyRange.Style = '标题 2' Or MyRange.Style = '标题 3' Then
            '获取标题文本和页码
            MyHeading = MyRange.Text
            MyPage = MyRange.Information(wdActiveEndPageNumber)
            '插入新行
            Set MyRow = MyTable.Rows.Add(BeforeRow:=MyTable.Rows(MyTable.Rows.Count))
            '插入页码和标题
            Set MyCell = MyRow.Cells(1)
            MyCell.Range.Text = CStr(MyPage)
            Set MyCell = MyRow.Cells(2)
            MyCell.Range.Text = MyHeading
            '设置样式和格式
            MyRow.Range.Font.Size = 10
            MyRow.Range.Font.Bold = False
            MyRow.Range.ParagraphFormat.Alignment = wdAlignParagraphLeft
        End If
        Set MyRange = MyRange.NextStoryRange
    Loop Until MyRange Is Nothing
Next

'调整表格样式和格式
With MyTable
    .Rows(1).Range.Font.Bold = True
    .Rows(1).Range.Font.Size = 12
    .Rows(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With

End Sub

说明:

  1. 首先定义变量,包括文档对象、表格对象、范围对象、行对象和单元格对象等。

  2. 创建目录表格,并设置表格样式和格式。

  3. 查找文档中的标题,根据需要修改标题样式,获取标题文本和页码。

  4. 插入新行,插入页码和标题,设置样式和格式。

  5. 调整表格样式和格式。

注意事项:

  1. 本程序仅适用于 Word 文档。

  2. 需要根据实际情况修改标题样式、表格样式和格式等。

  3. 需要考虑目录的层次结构,以便正确地显示标题和页码。

  4. 如果文档中有多个章节,需要在每个章节中运行程序,以便生成完整的目录。


原文地址: https://www.cveoy.top/t/topic/nx2t 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录