Vba word вставить закладку
Здравствуйте!
Есть документ в Ворде, в него (в определенные места по всему документу) необходимо вставлять данные из Эксель таблицы. Обратил внимание на инструмент "закладки".
Т.е. по всему документу я в нужных местах установил закладки и обозначил им имена. Далее макросом из Экселя (где таблица с данными) я по именам закладов обращаюсь к ним вставляю нужный текст. Код примерно такой:
[vba]
Set objWrdApp = CreateObject("Word.Application")
Set obj = objWrdApp.Documents(Name)
obj.Bookmarks.Item("закл_1").Range.Text = .Cells(5, 5)
[/vba]
Если в документе уже была заполнена закладка, то при повторном запуске кода текст добавляется, а не заменяется.
Мне немного непонятно что это за объект такой "закладки". Я не могу удалить её содержимое, обратившись к ней по имени (не саму закладку, а текст в ней). Хотелось бы перед заполнением закладки вначале удалить текст в ней, затем уже вставлять его.
Или это просто указатель в документе и я не смогу удалить текс, если ранее уже добавлял что то в документ к этой закладке?
Возможно что то неправильно объяснил в терминах, но сам до конца еще не разобрался.
Спасибо за комментарии.
Здравствуйте!
Есть документ в Ворде, в него (в определенные места по всему документу) необходимо вставлять данные из Эксель таблицы. Обратил внимание на инструмент "закладки".
Т.е. по всему документу я в нужных местах установил закладки и обозначил им имена. Далее макросом из Экселя (где таблица с данными) я по именам закладов обращаюсь к ним вставляю нужный текст. Код примерно такой:
[vba]
Set objWrdApp = CreateObject("Word.Application")
Set obj = objWrdApp.Documents(Name)
obj.Bookmarks.Item("закл_1").Range.Text = .Cells(5, 5)
[/vba]
Если в документе уже была заполнена закладка, то при повторном запуске кода текст добавляется, а не заменяется.
Мне немного непонятно что это за объект такой "закладки". Я не могу удалить её содержимое, обратившись к ней по имени (не саму закладку, а текст в ней). Хотелось бы перед заполнением закладки вначале удалить текст в ней, затем уже вставлять его.
Или это просто указатель в документе и я не смогу удалить текс, если ранее уже добавлял что то в документ к этой закладке?
Возможно что то неправильно объяснил в терминах, но сам до конца еще не разобрался.
Спасибо за комментарии. Serega-Sol
Set objWrdApp = CreateObject("Word.Application")
Set obj = objWrdApp.Documents(Name)
obj.Bookmarks.Item("закл_1").Range.Text = .Cells(5, 5)
[/vba]
Если в документе уже была заполнена закладка, то при повторном запуске кода текст добавляется, а не заменяется.
Мне немного непонятно что это за объект такой "закладки". Я не могу удалить её содержимое, обратившись к ней по имени (не саму закладку, а текст в ней). Хотелось бы перед заполнением закладки вначале удалить текст в ней, затем уже вставлять его.
Или это просто указатель в документе и я не смогу удалить текс, если ранее уже добавлял что то в документ к этой закладке?
Возможно что то неправильно объяснил в терминах, но сам до конца еще не разобрался.
Спасибо за комментарии. Автор - Serega-Sol
Дата добавления - 28.04.2021 в 18:56
Представляет одну закладки в документе, выборе или диапазоне. Объект "Закладки " входит в коллекцию "Закладки ". Коллекция "Закладки " включает все закладки, указанные в диалоговом окне "Закладки " (вставить меню).
Комментарии
Использование объекта "Закладки"
Используйте закладки (индекс), где индексом является имя или номер индекса закладки, чтобы вернуть один объект закладки. Вы должны точно соответствовать орфографии (но не обязательно капитализации) имени закладки. В следующем примере выбирается закладки с именем "temp" в активном документе.
Номер индекса представляет положение закладки в объекте Выбор или Диапазон . Для объекта Document номер индекса представляет положение закладки в алфавитном списке закладок в диалоговом окне " Закладки" (щелкните Имя для сортировки списка закладок в алфавитном порядке). В следующем примере отображается имя второй закладки в коллекции "Закладки ".
Используйте метод Добавить , чтобы добавить закладки в диапазон документов. В следующем примере помечаем выбор, добавив закладки с именем "temp".
Используйте свойство BookmarkID с объектом диапазона или выбора, чтобы вернуть номер индекса объекта " Закладки" в коллекции "Закладки ". В следующем примере отображается номер индекса закладки с именем "temp" в активном документе.
Используйте предопределенные закладки с свойством Bookmarks . В следующем примере закладки с именем "currpara" устанавливаются в расположении, отмеченном заранее задаткой с именем "\Para".
Используйте метод Exists , чтобы определить, существует ли закладки в выборе, диапазоне или документе. В следующем примере гарантируется, что закладки с именем "temp" существуют в активном документе перед выбором закладки.
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Основные объекты, использующиеся в VBA Word для определения места вставки, добавления и форматирования текста – это Selection (выделение), Range (диапазон) и Bookmark (закладка).
Selection и Range позволяют заполнять текстом новые документы или редактировать существующие. Закладки можно использовать для вставки изменяемых реквизитов в шаблоны различных документов: договоры, акты, справки.
Объект Range имеет преимущество перед объектом Selection, так как он может быть создан только программно и не зависит от действий пользователя. Если для вставки и форматирования текста будет использоваться объект Selection, а пользователь во время работы программы просто поставит курсор в другое место документа, результат будет непредсказуем.
Word.Range кардинально отличается от объекта Range в Excel. В приложении Word он представляет из себя набор из одного или множества символов. А также он может вообще не содержать ни одного символа, а быть указателем ввода текста (виртуальным курсором).
Объект Range возвращается свойством Range других объектов приложения Word: Document, Selection, Bookmark, Paragraph, Cell (объект Table).
Вставка текста без форматирования
Если текст вставляется без форматирования, достаточно одной строки кода (myDocument – это переменная):
- Вставка текста с заменой имеющегося: myDocument.Range.Text = "Вставляемый текст"
- Добавление текста после имеющегося: myDocument.Range.InsertAfter "Добавляемый текст"
- Добавление текста перед имеющимся: myDocument.Range.InsertBefore "Добавляемый текст"
Методами InsertAfter и InsertBefore можно вставить текст и на пустую страницу, также, как с помощью свойства Text. Перейти на новый абзац и начать предложение с красной строки можно с помощью ключевых слов vbCr (vbNewLine, vbCrLf) и vbTab.
Вставка текста с форматированием
Для форматирования отдельных участков текста необходимо указать диапазон символов, входящих в этот участок. Здесь нам также поможет объект Range, которому можно задать любой набор символов, содержащихся в документе Word.
При работе с многостраничными документами удобно пользоваться закладками, используя которые легко найти помеченное место в тексте документа.
Однако, установка закладки и переход к ней требуют нескольких "мышкодвижений", что замедляет работу.
Макрос Вставить_Закладку, размещённый в стандартном модуле Normal.dot (его вызов "привязан" к соответствующей кнопке на панели инструментов), устанавливает закладку с именем "My_BookMark" в отмеченном выделением месте документа:
[vba]
Sub Вставить_Закладку()
With Selection
If .Type <> wdSelectionNormal And .Type <> wdSelectionIP Then MsgBox "Закладка не установлена!": Exit Sub
ActiveDocument.Bookmarks.Add Range:=.Range, Name:="My_BookMark"
End With
End Sub
[/vba]
МакросПерейти_к_Закладке, размещённый в стандартном модуле Normal.dot (его вызов также "привязан" к соответствующей кнопке на панели инструментов), осуществляет переход к месту текста, помеченному закладкой "My_BookMark":
[vba]
Sub Перейти_к_Закладке()
On Error Resume Next
Selection.GoTo What:=wdGoToBookmark, Name:="My_BookMark"
If Err Then MsgBox "Закладка не была установлена"
End Sub
При работе с многостраничными документами удобно пользоваться закладками, используя которые легко найти помеченное место в тексте документа.
Однако, установка закладки и переход к ней требуют нескольких "мышкодвижений", что замедляет работу.
Макрос Вставить_Закладку, размещённый в стандартном модуле Normal.dot (его вызов "привязан" к соответствующей кнопке на панели инструментов), устанавливает закладку с именем "My_BookMark" в отмеченном выделением месте документа:
[vba]
Sub Вставить_Закладку()
With Selection
If .Type <> wdSelectionNormal And .Type <> wdSelectionIP Then MsgBox "Закладка не установлена!": Exit Sub
ActiveDocument.Bookmarks.Add Range:=.Range, Name:="My_BookMark"
End With
End Sub
[/vba]
МакросПерейти_к_Закладке, размещённый в стандартном модуле Normal.dot (его вызов также "привязан" к соответствующей кнопке на панели инструментов), осуществляет переход к месту текста, помеченному закладкой "My_BookMark":
[vba]
Sub Перейти_к_Закладке()
On Error Resume Next
Selection.GoTo What:=wdGoToBookmark, Name:="My_BookMark"
If Err Then MsgBox "Закладка не была установлена"
End Sub
С уважением,
Алексей
MS Excel 2003 - the best.
Sub Вставить_Закладку()
With Selection
If .Type <> wdSelectionNormal And .Type <> wdSelectionIP Then MsgBox "Закладка не установлена!": Exit Sub
ActiveDocument.Bookmarks.Add Range:=.Range, Name:="My_BookMark"
End With
End Sub
[/vba]
МакросПерейти_к_Закладке, размещённый в стандартном модуле Normal.dot (его вызов также "привязан" к соответствующей кнопке на панели инструментов), осуществляет переход к месту текста, помеченному закладкой "My_BookMark":
[vba]
Sub Перейти_к_Закладке()
On Error Resume Next
Selection.GoTo What:=wdGoToBookmark, Name:="My_BookMark"
If Err Then MsgBox "Закладка не была установлена"
End Sub
Represents position of selection in word document. Bookmark can be compared like Excel Named Range object. Bookmark is very useful object while automating word document using VBA (Visual Basic for Application). Microsoft offers Bookmarks collection by which we can iterate all available bookmarks within a document. The Bookmarks collection can be iterated using index (representing an integer) or bookmark name (representing a string name).
Create book mark Video
Add/Insert
To insert a bookmark in a document manually following steps can be performed:
Step 1: Point location where you wish to insert a bookmark
Step 2: Click on Bookmark command available on Insert Tab
Step 3: n the dialog, write name that you wish to have and click on Add
That’s it, your bookmark is inserted in the document and pointing to the selected location while adding it.
Add() method
Bookmarks collection object offers Add method to add bookmark in selected location or range.
Syntax
Name is a string where you need to specify name of the bookmark and Range is an optional argument.
Code example
Output
Exists() method
This method helps user to check if a bookmark exists in the document/range/selection or not.
Code example
Output
Delete() method
This method ensures deleting your existing bookmark in a range/document/selection.
Code example
Count property
Provides number of bookmarks available in given document/selection/range.
Code example
Above example prints all bookmarks name available in the given document in Immediate Window.
Name property
It returns name of the bookmark by identifying ID
BookmarkID property
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.
Code example
Copy() method
You can use predefined bookmarks with the Bookmark property. The following example sets the bookmark named “VBAOVERALL” to the location marked by the predefined bookmark named “\Info”.
Code example
Select() method
This method is responsible to select a bookmark in given selection/range/document.
Читайте также: