1

Тема: Как в Word VBA вставить закладку в текущее выделение в колонтитуле

Мне нужен макрос, который вставляет закладку в текущее выделение в колонтитуле (верхнем или нижнем).

Код ниже вставляет закладку в основном теле документа:

ActiveDocument.Bookmarks.Add Range:= _
        ActiveDocument.Range(Start:=Selection.Range.Start, End:=Selection.Range.End), _
        Name:="закладка"

А этот код вставляет закладку на весь колонтитул целиком:

ActiveDocument.Bookmarks.Add Range:=Selection.HeaderFooter.Range, Name:="закладка"

Как с помощью VBA вставить закладку на выделенный фрагмент в колонтитуле?

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

2

Re: Как в Word VBA вставить закладку в текущее выделение в колонтитуле

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

При этом я использую диалог для ввода имени закладки:

Dim s As String
  s = InputBox("Введите имя закладки")
Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

3

Re: Как в Word VBA вставить закладку в текущее выделение в колонтитуле

Как в Wоrd вставить закладку на текущий выделенный фрагмент с помощью VBA? Вот так:

Selection.Bookmarks.Add Range:=Selection.Range, Name:="закладка"

Сам спросил, сам ответил.

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

4

Re: Как в Word VBA вставить закладку в текущее выделение в колонтитуле

Александр Б. пишет:

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

При этом я использую диалог для ввода имени закладки:

Dim s As String
  s = InputBox("Введите имя закладки")

Word автоматически определяет, где находится выделенный текст: в основной полосе или колонтитуле, поэтому и в колонтитуле подойдет VBA-код

Selection.Bookmarks.Add Range:=Selection.Range, Name:="закладка"

для того, чтобы определить программно, где находится Selection, можно проверить значение свойства StoryType объекта Selection.Range. Если оно равно 1, то Selection относится к основной полосе. Все значения свойства можно посмотреть, напр., тут: внешняя ссылка - в подразделе wdStoryType.