1

Тема: Программное обновление текста закладки без удаления самой закладки

Предложенная процедура изменяет текст указанной закладки в определённом документе

'Процедура для обновления закладок.
Sub UpdateBookmark(ByVal Doc As Document, ByVal BookmarkName As String, ByVal BookmarkContent As Variant)
'Александр Витер
'Doc - документ, в котором нужно изменить закладку. Например, ActiveDocument
'BookmarkName - имя закладки, которую нужно изменить
'BookmarkContent - текст, который нужно поместить в закладку.
  Dim rng As Range
  Dim bm As Bookmarks
  Set bm = Doc.Bookmarks
  If bm.Exists(BookmarkName) Then
    Set rng = bm(BookmarkName).Range
    rng.Text = BookmarkContent
    bm.Add BookmarkName, rng
  End If
End Sub

Пример (изменение закладки MyBookmark в активном документе):

Call UpdateBookmark (ActiveDocument, "MyBookmark", "Изменённый текст закладки" )
Лучше день потерять — потом за пять минут долететь!

2

Re: Программное обновление текста закладки без удаления самой закладки

Эта процедура работает с закладками, в которых просто текст, но не поля????
и еще вопрос - а переименовать закладку возможно? Объясню ситуацию.. Пишется документация, в которой много таблиц и рисунков, на каждый номер вставлена закладка. Бывает, что какие-то рисунки удаляются или вместе с текстом, в котором есть перекрестная ссылка на закладку, переносятся в другой документ. Так вот имя закладки в данном случае уже перестает соответствовать ее содержимому.. Точнее нумерация объекта в имени закладки, текущему номеру объекта. можно ли как-то это синхронизовать? То есть проверить, что содержит внутри закладка, и если нумерация не совпадает, переименовать закладку?? и будет ли в данном случае работать перекрестная ссылка, которая была сделана на данную закладку??

3

Re: Программное обновление текста закладки без удаления самой закладки

Я писал её для себя и только для текстовых закладок.
Про переименование. Такого механизм не предусмотрен (свойство Name доступно только для чтения), но нужно всего лишь создать новую закладку в том же месте, а старую удалить

'Процедура для переименования закладок.
Sub RenameBookmark(ByVal Doc As Document, ByVal OldName As String, ByVal NewName As String)
'Александр Витер
'Doc - документ, в котором нужно изменить закладку. Например, ActiveDocument
'OldName - старое имя закладки
'NewName - новое имя закладки
  Dim rng As Range
  Dim bm As Bookmarks
  Set bm = Doc.Bookmarks
  If bm.Exists(OldName) Then
    Set rng = bm(OldName).Range
    bm(OldName).Delete
    bm.Add NewName, rng
  End If
End Sub

Перекрёстные ссылки работать не будут

Лучше день потерять — потом за пять минут долететь!