Страница 1 из 1
Структура Word
Добавлено: 23 фев 2008, 21:29
ARD
Подскажите, пожалуйста, как работать со структурой документа Word... а именно, как выделить текст, находящийся между двумя заголовками (одинаковых уровней)? Какие средства в VBA отвечают за работу с заголовками различных уровней?
Re: Структура Word
Добавлено: 23 фев 2008, 23:08
Aent
Заголовок в MS Word задаётся стилилем (style)
Стиль точки под курсором - Selection.Style - это просто строка типа "Заголовок 2"
Найти текст с таким же стилем поможет код:
Код: Выделить всё
With Selection.Find
.ClearFormatting
.Style = ActiveDocument.Styles("Заголовок 2")
.Execute
End With
Переключиться в режим работы со структурой документа можно через меню
Вид->Структура
или программно:
Код: Выделить всё
ActiveWindow.ActivePane.View.Type = wdMasterView
Перейти к заголовку под номером N (без учёта уровней) можно так:
Код: Выделить всё
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst, Count:=N
При обработке нужно не забыть про вариант:
level1
..level2
....level 3
....
level3
..level2
....
level3
..level2
Поиск текста со стилем level3 для первого выделенного текста найдёт очередной (т.е. второй выделенный), что очевидно для вас не подойдёт.
Поэтому поиск нужно осуществлять в соответствующей области. Или просто идти по заголовкам и выбирать очередной подходящий, обрабатывая стиль.
Структура Word
Добавлено: 23 фев 2008, 23:51
ARD
У меня возникают трудности еще в том что документ создан был в Word 2003 и при открытии его в Word 2007 у заголовков стиль - "обычный", хотя при открытии структуры документа все заголовки присутствуют...
Re: Структура Word
Добавлено: 24 фев 2008, 00:19
Aent
ARD писал(а):У меня возникают трудности еще в том что документ создан был в Word 2003 и при открытии его в Word 2007 у заголовков стиль - "обычный", хотя при открытии структуры документа все заголовки присутствуют...
Это IMHO баг Microsoft. Перед сохраненим в 2003 - выделяйте стили цветом, а при загрузке файла в 2007 - восстанавливайте стиль.
Re: Структура Word
Добавлено: 24 фев 2008, 00:56
Aent
Ещё одна идея:
Есть встроенная закладка Word - \HeadingLevel
" писал(а):
Текущий заголовок (заголовок, включающий выделение или курсор) и все подчинённые заголовки или текст. Если текущее выделение не является заголовком,
VBA выделяет заголовок, предшествующий выделению, а также все подчинённые заголовки или текст
Т.е допустим код вроде
Код: Выделить всё
ActiveDocument.Bookmarks("\HeadingLevel").Range.Select
Re: Структура Word
Добавлено: 02 мар 2008, 21:20
ARD
Aent писал(а):Ещё одна идея:
Есть встроенная закладка Word - \HeadingLevel
Т.е допустим код вроде
Код: Выделить всё
ActiveDocument.Bookmarks("\HeadingLevel").Range.Select
Спасиб)) - разобрался