Vba word текст закладки

Применение закладок для заполнения различных бланков на основе документов Word из кода VBA Excel. Объект Bookmark и его свойство Range.

Работа с Word из кода VBA Excel
Часть 5. Bookmarks – закладки в документе Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]

Добавление закладок в шаблон

Закладки (Bookmarks) являются удобным средством для вставки изменяющихся реквизитов в шаблоны документов. К закладкам можно обращаться по имени и не заморачиваться подсчетом количества символов до того места, где должен быть вставлен текст.

Вставляются закладки в шаблон документа вручную. Например, для следующего шаблона

Шаблон договора аренды с закладками

Шаблон договора аренды с закладками

это можно сделать так:

  1. Вставляем в макет шаблона в места вставки изменяемых реквизитов поясняющий текст. В нашем шаблоне это – <Город>, <Дата>, <Наименование арендатора> и <Наименование арендодателя>. Реквизиты <Город> и <Дата> добавлены в ячейки таблицы, чтобы их можно было разместить в одной строке, а выровнять по разным краям. Границы ячеек оставлены для наглядности.
  2. Выделяем текст <Город> и вставляем закладку под именем Bookmark1 через меню: Вставка ⇒ Закладка. Добавляем остальные закладки: <Дата> – Bookmark2, <Наименование арендатора> – Bookmark3, <Наименование арендодателя> – Bookmark4.
  3. Сохраняем бланк документа как шаблон Word. Полный путь для нашего примера: «C:ТестоваяДокумент1.dotx».

Создание и заполнение бланка

Реквизиты, добавляемые в места вставки, отмеченные закладками, обычно хранятся в таблицах Excel. Но мы вставим их напрямую в код процедуры:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

Sub Primer()

On Error GoTo Instr

Dim myWord As New Word.Application, myDocument As Word.Document

    ‘Создаем новый документ по шаблону

    Set myDocument = myWord.Documents.Add(«C:ТестоваяДокумент1.dotx»)

    myWord.Visible = True

With myDocument

    ‘Замещаем текст закладок

    .Bookmarks(«Bookmark1»).Range = «г. Омск»

    .Bookmarks(«Bookmark2»).Range = Format(Now, «DD.MM.YYYY»)

    .Bookmarks(«Bookmark3»).Range = «Каев Кай Гердович (ИП)»

    .Bookmarks(«Bookmark4»).Range = «ООО «Снежная королева»»

    ‘Удаляем границы ячеек

    .Tables(1).Borders.OutsideLineStyle = wdLineStyleNone

    .Tables(1).Borders.InsideLineStyle = wdLineStyleNone

End With

    ‘Освобождаем переменные

    Set myDocument = Nothing

    Set myWord = Nothing

‘Завершаем процедуру

Exit Sub

‘Обработка ошибок

Instr:

If Err.Description <> «» Then

    MsgBox «Произошла ошибка: « & Err.Description

End If

If Not myWord Is Nothing Then

    myWord.Quit

    Set myDocument = Nothing

    Set myWord = Nothing

End If

End Sub

В результате работы кода VBA Excel получаем заполненный бланк документа на основе шаблона Word:

Заполненный бланк договора аренды

Заполненный бланк договора аренды

I am trying to create a Word document with a very simple word macro. The macro searches for a bookmark that I have placed in the text and then adds a date, 2 weeks into the future, at that location.

But when I create a new document from the template I keep getting bookmark not found. I have been through it loads of times and sometimes the bookmark is there, sometimes its there but not allowing you to click «Go to».

How can I get it to work? I have added a little piece of code to the Document_New() event but that keeps reporting Bookmark not found.

I have the document in a rar-file since my webserver can’t handle .dotm extensions.
Document

How can I make it so that when a new document is produced from this template, the new document has the date, 2 weeks ahead, placed between the 2 bold sections?

Sub Two_Weeks_Ahead()
''# Two_Weeks_Ahead Makro
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With

    Dim dt As Date
    dt = DateAdd("d", 14, DateTime.Now)

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd")
End Sub

Private Sub Document_New()
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With

    Dim dt As Date
    dt = DateAdd("d", 14, DateTime.Now)

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd")
End Sub

I need to process a Word document and change (the text of) a bookmark.

I exported my Word document to flat xml format to help establish the structure of the document — here is a fragment

<w:bookmarkStart w:id="0" w:name="CustomerName"/>
<w:r w:rsidRPr="001E4487">
    <w:rPr>
        <w:rFonts w:ascii="MyTypeRegular" 
              w:hAnsi="MyTypeRegular" 
              w:cs="MyType V2 Regular"/>
        <w:szCs w:val="22"/>
    </w:rPr>
    <w:t>[CustomerName]</w:t>
</w:r>
<w:bookmarkEnd w:id="0"/>

The bit I need to change is <w:t>[CustomerName]</w:t> which should then become, for example <w:t>Some Punter</w:t>

so in my VBA i am hoping to be able to do something like this …

  Dim bkm As Bookmark
  For Each bkm In ActiveDocument.Bookmarks
    bkm.Text = "Some Punter"
  Next bkm

only BookMark does not have a Text property

How do Access that little data item in the square Brackets?

asked Feb 12, 2015 at 17:03

Hugh Jones's user avatar

A word bookmark doesn’t have a text property, but its range property does.

Use bkm.Range.Text = «Some Punter»

Note that once you change the text, the bookmark will be removed from the Word Document. In order to keep the bookmark you need to do:

    Dim bkm As Bookmark
    Dim bkmName As String
    Dim bkmRng As Range
    Dim NewText As String

    NewText = "Some Punter"

    For Each bkm In ActiveDocument.Bookmarks
        Set bkmRng = bkm.Range
        bkmName = bkm.Name
        bkm.Range.Text = NewText
        bkmRng.End = bkmRng.Start + Len(NewText)
        Bookmarks.Add(Name:=bkmName, Range:=bkmRng)
    Next bkm

Hope this helps.

answered Feb 12, 2015 at 17:30

OpiesDad's user avatar

OpiesDadOpiesDad

3,3452 gold badges16 silver badges31 bronze badges

I have a workaround for this that is not perfect but is less complicated: In place of the bookmark, use ActiveX text box and in place of cross-reference use ActiveX label. Then make change event (or LostFocus Event) for the text box: LabelName.Caption = TextboxName.Text. Formatting can be as desired. Alignment of text outside controls may be needed using Font> Advanced > Position > Raised. This may not be acceptable in all instances, but it often can be. Requires no update of field.

answered Jul 23, 2019 at 1:10

TommyExcels's user avatar

Аватар-С

1 / 1 / 0

Регистрация: 03.02.2017

Сообщений: 102

1

15.02.2017, 14:49. Показов 12516. Ответов 14

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте Коллеги!
Прошу помощи в следующем вопросе. Написал код вставки закладок, закладки вставляются также вставляется текст, но обратиться к нему через закладку не получается. Получается, что закладки вставились сами по себе, а текст сам по себе. Пожалуйста подскажи что, делаю не так.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub закладки()
        Dim Range As String
        
        With ActiveDocument
            .Bookmarks.Add Name:="ЗПочта", Range:=Selection.Range
            .Bookmarks("ЗПочта").Range.InsertAfter "@"
            
            
            .Bookmarks.Add Range:=Selection.Range, Name:="ЗТел"
            .Bookmarks("ЗТел").Range.Text = "495" & Chr(11)
            .Bookmarks.Add Name:="ЗИсп", Range:=Selection.Range
            .Bookmarks("ЗИсп").Range.Text = "Name" & Chr(11)
        End With
End Sub

Вложения

Тип файла: rar Закладки.rar (41.7 Кб, 15 просмотров)



0



1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

15.02.2017, 19:12

2

Вы не выделяете какой-то текст и закладки вставляются не как Вы ожидаете вида [], а вида I



1



Аватар-С

1 / 1 / 0

Регистрация: 03.02.2017

Сообщений: 102

16.02.2017, 11:10

 [ТС]

3

Здравствуйте Коллеги!
Ципихович Эндрю ! Спасибо за подсказку, она помогла. Я понял что, вначале создаем текст а, потом на него устанавливаем «закладку». Постарался сделать (согласно подсказки), вроде все получилось но, если посмотрите вложенный код. В общем все вставляется, появляется «закладка» с нужным именем прописывается текст но, в конце вставки выдает False/True.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub закладки()
    Dim Range As String
    Dim sИсп, sТел, sПочта 'As String
    sИсп = "Исп.:"
    'sТел = "тел.:"
    'sПочта = "эл.почта:"
    
    ActiveDocument.ActiveWindow.View.SeekView = wdSeekCurrentPageFooter
        Selection.Range.Text = Selection.Range.Text = sИсп '& Chr(13) & sТел & Chr(13) & sПочта
        Selection.Text = sИсп
        ActiveDocument.Bookmarks.Add Name:="ЗИсп" 'Range:=Selection.Range - что то здесь не так!
    ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocume
End Sub

Извините, пожалуйста! Можно еще под сказочку? Пожалуйста…



0



Ципихович Эндрю

1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

16.02.2017, 12:10

4

блин а колонтитулы тут при чем?
что-то написать где курсор

Visual Basic
1
 Selection.TypeText Text:="123:123"

в Вашем случае нужно писать

Visual Basic
1
Dim sИсп  As String

— чтобы меньше памяти тратить



0



1 / 1 / 0

Регистрация: 03.02.2017

Сообщений: 102

16.02.2017, 12:23

 [ТС]

5

Ципихович Эндрю !
Закладки нужны в колонтитулах, это экспериментальный текст, задумку можно посмотреть в приложенном файле. False не пропал.



0



Ципихович Эндрю

1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

16.02.2017, 12:30

6

мама родная — такая штука называется сетка-отметка об исполнителе

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 Documents.Add DocumentType:=wdNewBlankDocument
    Selection.Font.Size = 11
    'напечатать абзацы в количестве ... штук
    Selection.TypeText String(50, vbCr)
   
        setka = _
        "отп. 2 экз." & vbCrLf & _
                "1 - в адрес" & vbCrLf & _
                "2 - в дело (" & sood & ")" & vbCrLf & _
                "исп." & user_initials & user_f & vbCrLf & _
                phone_user & vbCrLf & _
                Format(Date, "dd.mm.yyyy")
Selection.TypeText Text:=setka
    'выделить всё
    Selection.WholeStory
    Application.PrintOut FileName:="", Range:=wdPrintSelection, Item:=wdPrintDocumentContent, Copies:=count_copies, Pages:="", PageType:=wdPrintAllPages, _
                         ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
                         PrintZoomPaperHeight:=0
    'Copies:= ... - печать копий ... штук (штуки)
    ActiveWindow.Close False



0



1 / 1 / 0

Регистрация: 03.02.2017

Сообщений: 102

16.02.2017, 12:43

 [ТС]

7

Ципихович Эндрю!
Все верно, эта штука нужна в колонтитуле (чтоб ее не сносили, каждый раз — девчонки), с переходом на последнюю страницу документа.
False — можно что то сделать?



0



Step_UA

1588 / 661 / 225

Регистрация: 09.06.2011

Сообщений: 1,334

16.02.2017, 16:01

8

Цитата
Сообщение от Аватар-С
Посмотреть сообщение

False — можно что то сделать?

Вы присваиваете результат сравнения текста из выделенния со значением переменной, вместо присвоения выделению текста

Visual Basic
1
Selection.Range.Text = sИсп



0



Аватар-С

1 / 1 / 0

Регистрация: 03.02.2017

Сообщений: 102

16.02.2017, 17:03

 [ТС]

9

Спасибо Step_UA!
Я, заметил ошибку, теперь другая беда.

первый код создает все как нужно.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub закладки()
    Dim Range As String
    Dim sИсп As String, sТел As String, sПочта As String
    sИсп = "Исп.: И.О.Фамилия"
    
    ActiveDocument.ActiveWindow.View.SeekView = wdSeekCurrentPageFooter
            Selection.Text = sИсп & Chr(13)
            ActiveDocument.Bookmarks.Add Name:="ЗИсполнитель", Range:=Selection.Range
     ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocume
    'ActiveDocument.Bookmarks("ЗИсполнитель").Range.Text = "5"
End Sub

а второй перезаписывает закладки, остается последняя

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub закладки()
    Dim Range As String
    Dim sИсп As String, sТел As String, sПочта As String
    sИсп = "Исп.: И.О.Фамилия"
    sТел = "тел.: +7 (000) 000 - 0000 | 0 - 00"
    sПочта = "эл.почта: [email]name@site.ru[/email]"
    
    ActiveDocument.ActiveWindow.View.SeekView = wdSeekCurrentPageFooter
    'Selection.Text = sИсп & Chr(13) & sТел & Chr(13) & sПочта '& vbNewline
            Selection.Text = sИсп & Chr(13)
            ActiveDocument.Bookmarks.Add Name:="ЗИсполнитель", Range:=Selection.Range
            Selection.Text = sТел
            ActiveDocument.Bookmarks.Add Name:="ЗТелефон", Range:=Selection.Range
            Selection.Text = sПочта
            ActiveDocument.Bookmarks.Add Name:="ЗПочта", Range:=Selection.Range
     ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocume
    'ActiveDocument.Bookmarks("ЗИсполнитель").Range.Text = "5"
End Sub

Что делать?



0



1588 / 661 / 225

Регистрация: 09.06.2011

Сообщений: 1,334

16.02.2017, 17:51

10

Цитата
Сообщение от Аватар-С
Посмотреть сообщение

Что делать?

1) При полной замене текста закладки она удаляется
2) Диаппазон выделения не изменяется — подряд перезаписываете данные
В целом если место вставки данных известно, то зачем закладки? … ну и работа через Selection только тормозит — используйте диаппазоны



0



1 / 1 / 0

Регистрация: 03.02.2017

Сообщений: 102

16.02.2017, 18:10

 [ТС]

11

Извините диапазон имеется ввиду Range?

Добавлено через 1 минуту

Цитата
Сообщение от Step_UA
Посмотреть сообщение

используйте диаппазоны

Извините диапазон имеется ввиду Range?



0



Ципихович Эндрю

1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

16.02.2017, 18:13

12

да —

Visual Basic
1
Dim rRange As Range



0



Аватар-С

1 / 1 / 0

Регистрация: 03.02.2017

Сообщений: 102

01.03.2017, 17:03

 [ТС]

13

Здравствуйте Коллеги!
Еще раз Спасибо! Ципихович Эндрю и Step_UA

Долго мучился но определенного результата добился. Задача была следующая создать колонтитул со следующими условиями:

  • нижний колонтитул должен отображаться на последней странице документа с выравнивание по правому краю (формула);
  • вставленный текст формируется в закладку для последующей проверки (при печати);
  • верхний колонтитул появляется со второй страницы с выравниванием по центру;
  • соответственно верхний и нижний колонтитулы форматируются по размеру текста и шрифту.

Получился следующий код состоящий из двух процедур:

ИСПОЛНИТЕЛЬ:

Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Sub ИСПОЛНИТЕЛЬ()
 
'Верхний колонтитул
    ActiveDocument.ActiveWindow.View.SeekView = wdSeekCurrentPageHeader
    
    'убрать параметр "Как в предыдущем разделе" (отменяется параметр по умолчанию):
    Selection.HeaderFooter.LinkToPrevious = Not Selection.HeaderFooter.LinkToPrevious
    
    'отключаем особый колонтитул для первой страницы:
    ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter = False '[False] [True]
    
    'удалем значения верхнего колонтитула для последующих страниц
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.WholeStory
    Selection.Delete Unit:=wdCharacter, Count:=1
    ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter = True
    
    'отключаем особые колонтитулы разделов
    For i = 1 To ActiveDocument.Sections.Count
    If i > 1 Then
        Set oRange = ActiveDocument.Sections(i).Range
        ActiveDocument.Sections(i).PageSetup.DifferentFirstPageHeaderFooter = False
    End If
    Next
    
    'вставляем нумерацию последуюзих страниц
    Selection.Sections(1).Headers(3).PageNumbers.Add PageNumberAlignment:=wdAlignPageNumberCenter, FirstPage:=False
        With ActiveDocument.Sections(1).Headers(3).Range    '1 wdHeaderFooterPrimary     все к. кроме первой страницы документа или раздела
            .Font.Name = "TimesNewRoman"
            .Font.Size = 12
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
        End With
    ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocume
    
'Нижний колонтитул
    Dim sВсе As String
        sИсп = "Исп.: И.О.Фамилия" & Chr(11)
        sТел = "тел.: +7 (000) 000 - 0000 | 0 - 00" & Chr(11)
        sПочта = "эл.почта: [email]name@site.ru[/email]"
        sВсе = sИсп & sТел & sПочта
    ActiveDocument.ActiveWindow.View.SeekView = wdSeekCurrentPageFooter
    
    'удаляем нижний колонтитул
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
    Selection.WholeStory
    Selection.Delete Unit:=wdCharacter, Count:=1
    
    'переменные
    ActiveDocument.ActiveWindow.View.SeekView = wdSeekCurrentPageFooter
    Dim fld As Field
    Dim myFR As Word.Range
    
    'формула перехода данных на последнюю страницу документа
    Set fld = Selection.Fields.Add(Range:=Selection.Range)
        fld.Code.Text = "IF"
    Set myFR = fld.Code
        myFR.SetRange Start:=fld.Code.End, End:=fld.Code.End
        fld.Code.Fields.Add Range:=myFR, Text:="PAGE"
        myFR.SetRange Start:=fld.Code.End, End:=fld.Code.End
        myFR.Text = "="
        myFR.SetRange Start:=fld.Code.End, End:=fld.Code.End
        fld.Code.Fields.Add Range:=myFR, Text:="NUMPAGES"
        myFR.SetRange Start:=fld.Code.End, End:=fld.Code.End
    
    'вставляем закладку
        myFR.Text = """" & sВсе & """"
        myFR.Bookmarks.Add ("Исполнитель")
        
    'форматирование результата исполнитель
        Word.ActiveDocument.Sections(1).Footers(2).Range.Select    '3 wdHeaderFooterEvenPages   все к. даже на пронумерованных статьях
        With ActiveDocument.Sections(1).Footers(2).Range           '2 wdHeaderFooterFirstPage   первый к. в документе или разделе
            .Font.Name = "TimesNewRoman"                           '1 wdHeaderFooterPrimary     все к. кроме первой страницы документа или раздела
            .Font.Size = 9
            .ParagraphFormat.Alignment = wdAlignParagraphLeft
        End With
        Word.ActiveDocument.Sections(1).Footers(1).Range.Select
        With ActiveDocument.Sections(1).Footers(1).Range
            .Font.Name = "TimesNewRoman"
            .Font.Size = 9
            .ParagraphFormat.Alignment = wdAlignParagraphLeft
        End With
    
    'скрыть/показать формулу кода полей False/True
    ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
    ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocume
    Selection.Fields.Update
 
End Sub

ПРОВЕРКА ИСПОЛНИТЕЛЯ:

Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub ПРОВЕРКА_ИСПОЛНИТЕЛЯ()
    
    'проверка исполнителя
    Dim SearchString, SearchChar, MyPos
        fИсп = "Исп.: И.О.Фамилия"
        fТел = "тел.: +7 (000) 000 - 0000 | 0 - 00"
        fПочта = "эл.почта: [email]name@site.ru[/email]"
        Где = ActiveDocument.Bookmarks.Item("Исполнитель").Range
        Что = fИсп ' в архиве нужно будет исправить
 
    Проверяем = InStr(Где, Что)
    If Проверяем > 0 Then
        MsgBox "Исполнитель в документе:" _
           & vbCrLf & "      " & fИсп _
           & vbCrLf & "      " & fТел _
           & vbCrLf & "      " & fПочта, 64
    Else
        MsgBox "Исполнитель в документе и установке программы не соответствуют проверке!", 48
        End If
 
End Sub

Буду признателен за Ваши замечания!
С уважением Аватар-С

Вложения

Тип файла: rar ПРОВЕРКА_ИСПОЛНИТЕЛЯ.rar (26.7 Кб, 31 просмотров)



0



1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

01.03.2017, 17:23

14

а так-то лучше не закладка-так как её можно удалить а вариаблес-тоже можно удалить, но сложнее



0



1 / 1 / 0

Регистрация: 03.02.2017

Сообщений: 102

01.03.2017, 17:33

 [ТС]

15

Ципихович Эндрю

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

а так-то лучше не закладка-так как её можно удалить а вариаблес-тоже можно удалить, но сложнее

Извините пожалуйста, не совсем понял почему вариаблес?



0



title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Bookmark object (Word)

vbawd10.chm2408

vbawd10.chm2408

word

Word.Bookmark

be6b0c7b-60ca-97e7-ef19-6de335da3197

06/08/2017

medium

Bookmark object (Word)

Represents a single bookmark in a document, selection, or range. The Bookmark object is a member of the Bookmarks collection. The Bookmarks collection includes all the bookmarks listed in the Bookmark dialog box (Insert menu).

Remarks

Using the Bookmark Object

Use Bookmarks (index), where index is the bookmark name or index number, to return a single Bookmark object. You must exactly match the spelling (but not necessarily the capitalization) of the bookmark name. The following example selects the bookmark named «temp» in the active document.

ActiveDocument.Bookmarks("temp").Select

The index number represents the position of the bookmark in the Selection or Range object. For the Document object, the index number represents the position of the bookmark in the alphabetical list of bookmarks in the Bookmarks dialog box (click Name to sort the list of bookmarks alphabetically). The following example displays the name of the second bookmark in the Bookmarks collection.

MsgBox ActiveDocument.Bookmarks(2).Name

Use the Add method to add a bookmark to a document range. The following example marks the selection by adding a bookmark named «temp.»

ActiveDocument.Bookmarks.Add Name:="temp", Range:=Selection.Range

Remarks

Use the BookmarkID property with a range or selection object to return the index number of a Bookmark object in the Bookmarks collection. The following example displays the index number of the bookmark named «temp» in the active document.

MsgBox ActiveDocument.Bookmarks("temp").Range.BookmarkID

Use predefined bookmarkswith the Bookmarks property. The following example sets the bookmark named «currpara» to the location marked by the predefined bookmark named «Para».

ActiveDocument.Bookmarks("Para").Copy "currpara"

Use the Exists method to determine whether a bookmark already exists in the selection, range, or document. The following example ensures that the bookmark named «temp» exists in the active document before selecting the bookmark.

If ActiveDocument.Bookmarks.Exists("temp") = True Then 
 ActiveDocument.Bookmarks("temp").Select 
End If

Methods

  • Copy
  • Delete
  • Select

Properties

  • Application
  • Column
  • Creator
  • Empty
  • End
  • Name
  • Parent
  • Range
  • Start
  • StoryType

See also

  • Word Object Model Reference

[!includeSupport and feedback]

Like this post? Please share to your friends:
  • Vba word таблица цвет ячейки
  • Vba word таблица в таблице
  • Vba word таблица range
  • Vba word сумма прописью
  • Vba word структура документа