Поиск заголовков в word

Программирование на Visual Basic for Applications
krez0n
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.02.2007 (Пт) 10:51

Поиск заголовков в word

Сообщение krez0n » 03.10.2007 (Ср) 7:54

нужно найти заголовки, к примеру, первого уровня и применить к ним соответствующее форматирование. пробовал писать такой код:

Код: Выделить всё
Sub Смена_заголовков()
With ActiveDocument.Styles(wdStyleHeading1).Font
    .Name = "Arial"
    .Size = 10
    End With
End Sub


но только проблема в том, что word ищет заголовок по списку стилей. И если в списке стилей есть несколько стилей заголовков первого уровня, то идет применение только к первому из спика, а нужно чтобы ко всем стилям. может у кого есть идеи?

P.S. названия заголовков первого уровня изначально неизвестны[/code]

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 03.10.2007 (Ср) 8:42

Проверять сперва список силей а предмет тех, которые базируются на heading 1 а потом уже, получив их список в цикле менять форматирование для каждого?
I don't understand. Sorry.

krez0n
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.02.2007 (Пт) 10:51

Сообщение krez0n » 03.10.2007 (Ср) 8:53

RayShade писал(а):Проверять сперва список силей а предмет тех, которые базируются на heading 1 а потом уже, получив их список в цикле менять форматирование для каждого?


а как это можно сделать? как проверить список на наличие заголовков?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 03.10.2007 (Ср) 10:06

У каждого стиля в Word есть проперть BaseStyle которая хранит в себе имя стиля на котором он основан :) То есть получается что то типа



Код: Выделить всё
Sub Смена_заголовков(a)
With ActiveDocument.Styles(a).Font
    .Name = "Arial"
    .Size = 10
    End With
End Sub

dim coll as new collection

for i=1 to activedocument.styles.count
if (styles.item(i).name="heading") or (styles.item(i).basename="heading") then coll.add styles.item(i).name
net i

for i=1 to coll.count
Смена_заголовков(coll.item(i))
next i

I don't understand. Sorry.

krez0n
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.02.2007 (Пт) 10:51

Сообщение krez0n » 04.10.2007 (Чт) 8:33

не знаю почему, но в этой строке пишет, что требует объект и выкидывает ошибку
Код: Выделить всё
if (styles.item(i).name="heading") or (styles.item(i).basename="heading") then coll.add styles.item(i).name

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.10.2007 (Чт) 8:37

ActiveDocument.Styles разумеется.
Lasciate ogni speranza, voi ch'entrate.

krez0n
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.02.2007 (Пт) 10:51

Сообщение krez0n » 04.10.2007 (Чт) 8:43

alibek писал(а):ActiveDocument.Styles разумеется.

да нет. это я поставил. дело по ходу не в этом.
у меня сейчас часть кода так

Код: Выделить всё
For i = 1 To ActiveDocument.Styles.Count
If (ActiveDocument.Styles.Item(i) = "Заголовок 1") Or (ActiveDocument.Styles.Item(i).BaseStyle = wdStyleHeading1) Then coll.Add Styles.Item(i).Name
Next i

и во второй строке ошибка

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.10.2007 (Чт) 8:58

Ты не везде указал ActiveDocument.
Lasciate ogni speranza, voi ch'entrate.

krez0n
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.02.2007 (Пт) 10:51

Сообщение krez0n » 04.10.2007 (Чт) 9:19

да я уже нашел проблемные места. осталось понять почему в ActiveDocument.Styles.Item(i).BaseStyle не входят добавленные вручную стили. Видны только стили из Normal.dot


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64

    TopList