Создать закладку в 1-й колонке таблицы MSWord - PullRequest
4 голосов
/ 07 июня 2010

есть ли у кого-нибудь код VBA для создания закладки в первом столбце таблицы MSWord?

Допустим, у меня есть таблица, похожая на эту

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

и мне нужен фрагмент кода VBA, который создает закладку с именем «T1_1» в строке «1» в строке 2 / столбце 1 и закладки «T1_2», «T1_foo» и «T1_bar» в строках другие ячейки столбца 1.

Я не против жестко закодировать префикс "T1" (и заменять другие таблицы каждый раз). Я не возражаю против выбора таблиц перед запуском макроса, я не против придания этим ячейкам специального формата, и я не против получить лишнюю закладку "T1_ref" в первой строке - так что код не необходимо различать заголовок таблицы и строку таблицы.

Заранее большое спасибо

1 Ответ

4 голосов
/ 07 июня 2010
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

Этого должно быть достаточно, чтобы вы выполнили свою задачу. Это добавит закладку в каждую ячейку в первом столбце (кроме первой строки) любой таблицы в текущем документе.

...