在MSWord表的第1列中创建书签

时间:2010-06-07 15:51:13

标签: vba ms-word word-vba

是否有人有VBA代码在MSWord表的第一列中创建书签?

假设我有一张看起来像这样的表

.-----.----------------.
. ref . Title          .
.-----.----------------.
.  1  . Title 1        .
.-----.----------------.
.  2  . Title 2        .
.-----.----------------.
. foo . Title 3        .
.-----.----------------.
. bar . Title 4        .
.-----.----------------.

我想要一个VBA代码片段,在第2行/第1列的字符串“1”上创建名为“T1_1”的书签,在字符串中创建名为“T1_2”,“T1_foo”和“T1_bar”的书签第1列的其他单元格。

我不介意硬编码前缀“T1”(并且每次都替换其他表)。我不介意在运行宏之前选择表格,我不介意给那些单元格一个特殊的格式,我不介意从第一行得到多余的书签“T1_ref” - 所以代码没有需要区分表格标题和表格行。

提前多多感谢

1 个答案:

答案 0 :(得分:4)

Public Sub Testing()
    Dim strText As String
    Dim i As Integer, j as Integer
    For j = 1 To ThisDocument.Tables.Count
        For i = 2 To ThisDocument.Tables(j).Rows.Count
            strText = StripNonPrint(ThisDocument.Tables(j).Cell(i, 1).Range)
            ActiveDocument.Bookmarks.Add Range:=ThisDocument.Tables(j).Cell(i, 1).Range, Name:="T1_" & strText
        Next i
    Next j
End Sub

Private Function StripNonPrint(ByVal s As String)
  StripNonPrint = Trim(Replace(s, vbCr & Chr(7), ""))
End Function

这应该足以让你继续完成任务。这将为当前文档中任何表的第一列(第一行除外)中的每个单元格添加书签。