Структура Word
Модератор: Naeel Maqsudov
Подскажите, пожалуйста, как работать со структурой документа Word... а именно, как выделить текст, находящийся между двумя заголовками (одинаковых уровней)? Какие средства в VBA отвечают за работу с заголовками различных уровней?
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Заголовок в MS Word задаётся стилилем (style)
Стиль точки под курсором - Selection.Style - это просто строка типа "Заголовок 2"
Найти текст с таким же стилем поможет код:
Переключиться в режим работы со структурой документа можно через меню
Вид->Структура
или программно:
Перейти к заголовку под номером N (без учёта уровней) можно так:
При обработке нужно не забыть про вариант:
level1
..level2
....level 3
....level3
..level2
....level3
..level2
Поиск текста со стилем level3 для первого выделенного текста найдёт очередной (т.е. второй выделенный), что очевидно для вас не подойдёт.
Поэтому поиск нужно осуществлять в соответствующей области. Или просто идти по заголовкам и выбирать очередной подходящий, обрабатывая стиль.
Стиль точки под курсором - Selection.Style - это просто строка типа "Заголовок 2"
Найти текст с таким же стилем поможет код:
Код: Выделить всё
With Selection.Find
.ClearFormatting
.Style = ActiveDocument.Styles("Заголовок 2")
.Execute
End With
Вид->Структура
или программно:
Код: Выделить всё
ActiveWindow.ActivePane.View.Type = wdMasterView
Код: Выделить всё
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst, Count:=N
level1
..level2
....level 3
....level3
..level2
....level3
..level2
Поиск текста со стилем level3 для первого выделенного текста найдёт очередной (т.е. второй выделенный), что очевидно для вас не подойдёт.
Поэтому поиск нужно осуществлять в соответствующей области. Или просто идти по заголовкам и выбирать очередной подходящий, обрабатывая стиль.
У меня возникают трудности еще в том что документ создан был в Word 2003 и при открытии его в Word 2007 у заголовков стиль - "обычный", хотя при открытии структуры документа все заголовки присутствуют...
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Это IMHO баг Microsoft. Перед сохраненим в 2003 - выделяйте стили цветом, а при загрузке файла в 2007 - восстанавливайте стиль.ARD писал(а):У меня возникают трудности еще в том что документ создан был в Word 2003 и при открытии его в Word 2007 у заголовков стиль - "обычный", хотя при открытии структуры документа все заголовки присутствуют...
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Ещё одна идея:
Есть встроенная закладка Word - \HeadingLevel
Т.е допустим код вроде
Есть встроенная закладка Word - \HeadingLevel
" писал(а): Текущий заголовок (заголовок, включающий выделение или курсор) и все подчинённые заголовки или текст. Если текущее выделение не является заголовком,
VBA выделяет заголовок, предшествующий выделению, а также все подчинённые заголовки или текст
Т.е допустим код вроде
Код: Выделить всё
ActiveDocument.Bookmarks("\HeadingLevel").Range.Select
Спасиб)) - разобралсяAent писал(а):Ещё одна идея:
Есть встроенная закладка Word - \HeadingLevel
Т.е допустим код вродеКод: Выделить всё
ActiveDocument.Bookmarks("\HeadingLevel").Range.Select