title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|---|
Bookmarks.Add method (Word) |
vbawd10.chm157745157 |
vbawd10.chm157745157 |
word |
Word.Bookmarks.Add |
647795da-d7e2-7b6f-c412-5b684ec962a2 |
06/08/2017 |
medium |
Bookmarks.Add method (Word)
Returns a Bookmark object that represents a bookmark added to a range.
Syntax
expression.Add (Name, Range)
expression Required. A variable that represents a ‘Bookmarks’ collection.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
Name | Required | String | The name of the bookmark. The name cannot be more than 40 characters or include more than one word. |
Range | Optional | Variant | The range of text marked by the bookmark. A bookmark can be set to a collapsed range (the insertion point). |
Return value
Bookmark
Example
This example adds a bookmark named myplace to the selection in the active document.
Sub BMark() ' Select some text in the active document prior ' to execution. ActiveDocument.Bookmarks.Add _ Name:="myplace", Range:=Selection.Range End Sub
This example adds a bookmark named mark at the insertion point.
Sub Mark() ActiveDocument.Bookmarks.Add Name:="mark" End Sub
This example adds a bookmark named third_para to the third paragraph in Letter.doc, and then it displays all the bookmarks for the document in the active window.
Sub ThirdPara() Dim myDoc As Document ' To best illustrate this example, ' Letter.doc must be opened, not active, ' and contain more than 3 paragraphs. Set myDoc = Documents("Letter.doc") myDoc.Bookmarks.Add Name:="third_para", _ Range:=myDoc.Paragraphs(3).Range myDoc.ActiveWindow.View.ShowBookmarks = True End Sub
See also
Bookmarks Collection Object
[!includeSupport and feedback]
Применение закладок для заполнения различных бланков на основе документов Word из кода VBA Excel. Объект Bookmark и его свойство Range.
Работа с Word из кода VBA Excel
Часть 5. Bookmarks – закладки в документе Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]
Добавление закладок в шаблон
Закладки (Bookmarks) являются удобным средством для вставки изменяющихся реквизитов в шаблоны документов. К закладкам можно обращаться по имени и не заморачиваться подсчетом количества символов до того места, где должен быть вставлен текст.
Вставляются закладки в шаблон документа вручную. Например, для следующего шаблона
Шаблон договора аренды с закладками
это можно сделать так:
- Вставляем в макет шаблона в места вставки изменяемых реквизитов поясняющий текст. В нашем шаблоне это – <Город>, <Дата>, <Наименование арендатора> и <Наименование арендодателя>. Реквизиты <Город> и <Дата> добавлены в ячейки таблицы, чтобы их можно было разместить в одной строке, а выровнять по разным краям. Границы ячеек оставлены для наглядности.
- Выделяем текст <Город> и вставляем закладку под именем Bookmark1 через меню: Вставка ⇒ Закладка. Добавляем остальные закладки: <Дата> – Bookmark2, <Наименование арендатора> – Bookmark3, <Наименование арендодателя> – Bookmark4.
- Сохраняем бланк документа как шаблон 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:
Заполненный бланк договора аренды
Add Bookmark
This Word macro will add a bookmark:
Sub AddBookmark()
ActiveDocument.Bookmarks.Add "automateexcel_com_01"
End Sub
Delete Bookmark
This VBA macro will delete a bookmark:
Sub DeleteBookmark()
If ActiveDocument.Bookmarks.Exists("automateexcel_com_01") Then 'we need to check if bookmark named "automateexcel_com_01" exists in active doc
ActiveDocument.Bookmarks(Index:="automateexcel_com_01").Delete
End If
End Sub
Go To Bookmark
This simple macro will go to a bookmark:
Sub GoToBookmark()
If ActiveDocument.Bookmarks.Exists("automateexcel_com_01") Then 'we need to check if bookmark named "automateexcel_com_01" exists in active doc
Selection.GoTo What:=wdGoToBookmark, Name:="automateexcel_com_01"
End If
End Sub
Modify Bookmark
This macro will modify a bookmark’s content:
Sub ModifyBookmarkContent()
' change bookmark contents
' more complicated, because changing bookmark range content will delete bookmark
Dim oRangeBKM As Range
If ActiveDocument.Bookmarks.Exists("automateexcel_com_01") Then 'we need to check if bookmark named "automateexcel_com_01" exists in active doc
'Identify current Bookmark range and insert text
Set oRangeBKM = ActiveDocument.Bookmarks("automateexcel_com_01").Range
oRangeBKM.Text = "automateexcel.com"
'Make again the bookmark
ActiveDocument.Bookmarks.Add "automateexcel_com_01", oRangeBKM
End If
End Sub
This is a modify bookmark function:
Sub UpdateBookmarkContent(strBookMarkName As String, strNewText As String)
' "usable' procedure for add in
Dim oRangeBKM As Range
If ActiveDocument.Bookmarks.Exists(strBookMarkName) Then 'we need to check if bookmark named "automateexcel_com_01" exists in active doc
'Identify current Bookmark range and insert text
Set oRangeBKM = ActiveDocument.Bookmarks(strBookMarkName).Range
oRangeBKM.Text = strNewText
'Make again the bookmark
ActiveDocument.Bookmarks.Add strBookMarkName, oRangeBKM
End If
End Sub
You can call the function by adding the bookmark name and new text as arguments:
Sub CallBookmarkFunction()
Call UpdateBookmarkContent("automateexcel_com_01", "automateexcel.com")
End Sub
Аватар-С 1 / 1 / 0 Регистрация: 03.02.2017 Сообщений: 102 |
||||||
1 |
||||||
15.02.2017, 14:49. Показов 12516. Ответов 14 Метки нет (Все метки)
Здравствуйте Коллеги!
Вложения
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 |
|||
Здравствуйте Коллеги!
Извините, пожалуйста! Можно еще под сказочку? Пожалуйста…
0 |
Ципихович Эндрю 1508 / 478 / 56 Регистрация: 10.04.2009 Сообщений: 8,008 |
||||||||
16.02.2017, 12:10 |
4 |
|||||||
блин а колонтитулы тут при чем?
в Вашем случае нужно писать
— чтобы меньше памяти тратить
0 |
1 / 1 / 0 Регистрация: 03.02.2017 Сообщений: 102 |
|
16.02.2017, 12:23 [ТС] |
5 |
Ципихович Эндрю !
0 |
Ципихович Эндрю 1508 / 478 / 56 Регистрация: 10.04.2009 Сообщений: 8,008 |
||||
16.02.2017, 12:30 |
6 |
|||
мама родная — такая штука называется сетка-отметка об исполнителе
0 |
1 / 1 / 0 Регистрация: 03.02.2017 Сообщений: 102 |
|
16.02.2017, 12:43 [ТС] |
7 |
Ципихович Эндрю!
0 |
Step_UA 1588 / 661 / 225 Регистрация: 09.06.2011 Сообщений: 1,334 |
||||
16.02.2017, 16:01 |
8 |
|||
False — можно что то сделать? Вы присваиваете результат сравнения текста из выделенния со значением переменной, вместо присвоения выделению текста
0 |
Аватар-С 1 / 1 / 0 Регистрация: 03.02.2017 Сообщений: 102 |
||||||||
16.02.2017, 17:03 [ТС] |
9 |
|||||||
Спасибо Step_UA! первый код создает все как нужно.
а второй перезаписывает закладки, остается последняя
Что делать?
0 |
1588 / 661 / 225 Регистрация: 09.06.2011 Сообщений: 1,334 |
|
16.02.2017, 17:51 |
10 |
Что делать? 1) При полной замене текста закладки она удаляется
0 |
1 / 1 / 0 Регистрация: 03.02.2017 Сообщений: 102 |
|
16.02.2017, 18:10 [ТС] |
11 |
Извините диапазон имеется ввиду Range? Добавлено через 1 минуту
используйте диаппазоны Извините диапазон имеется ввиду Range?
0 |
Ципихович Эндрю 1508 / 478 / 56 Регистрация: 10.04.2009 Сообщений: 8,008 |
||||
16.02.2017, 18:13 |
12 |
|||
да —
0 |
Аватар-С 1 / 1 / 0 Регистрация: 03.02.2017 Сообщений: 102 |
||||||||||
01.03.2017, 17:03 [ТС] |
13 |
|||||||||
Здравствуйте Коллеги! Долго мучился но определенного результата добился. Задача была следующая создать колонтитул со следующими условиями:
Получился следующий код состоящий из двух процедур: ИСПОЛНИТЕЛЬ: Кликните здесь для просмотра всего текста
ПРОВЕРКА ИСПОЛНИТЕЛЯ: Кликните здесь для просмотра всего текста
Буду признателен за Ваши замечания! Вложения
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 |
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