Парсинг в Word-е

Программирование на Visual Basic for Applications
kitovras
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 18.03.2004 (Чт) 8:08

Парсинг в Word-е

Сообщение kitovras » 20.03.2004 (Сб) 7:53

Попытался я было произвести парсинг Word-документа.
Однако, есть коллекции объектов, связанных с текстом (Paragraphs, Sentences, Words, Characters). А есть коллекции, к примеру, встроенных фигур InlineShapeы, фигур Shapes и еще целая куча всего... :(
Когда я перебираю, предположим, Words (в цикле For...Each. Этот цикл - быстрейший способ перебора, как мне показалось), то, предположим, Shape найти нельзя. И наоборот. Как же с этим бороться? Чтобы за один проход прочитать документ и чтобы все объекты были на своих местах?

Возможно (хотя в MS текстах я этого не нашел, а ищу уже пару месяцев...), есть способ перебирать, предположим, некий objects, тут же определяя, что он такое? Например,
Select case <object>.Type
Case Word
Case Picture
Case Table...
А вообще, IMHO, MS специально издевается над нами подобной объектной библиотекой... ;)

Спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.03.2004 (Сб) 9:46

Поработай с ним ещё. Потом поработай ещё и ещё.
Тогда поймёшь, что эта OM гениальна...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение alibek » 20.03.2004 (Сб) 17:53

Ну, гениально это слишком сильно сказано :)
Но там действительно все продумано неплохо. Попробуй на досуге придумать свою модель, убедишься что в MS не дураки сидят. Не дураки, а сволочи ;)

Тип объекта определить можно функцией TypeName (возвращает в виде стринга имя класса), а можно конструкцией TypeOf
Код: Выделить всё
If TypeOf obj Is Shape Then
  ...
ElseIf TypeOf obj Is Table Then
  ...
Else
  ...
End If

Лично мне больше по душе вторая конструкция, хотя она и сложнее в использовании, но зато идет контроль кода уже во время компиляции.
Только некоей коллекции, в которую включены ВСЕ объекты Word, не существует.
Lasciate ogni speranza, voi ch'entrate.

kitovras
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 18.03.2004 (Чт) 8:08

Сообщение kitovras » 22.03.2004 (Пн) 7:19

OK, ThankSSS
До такого способа проверки (TypeOf) я додумался и сам, я думал, нет ли другого способа... Но не в этом дело.
А именно дело - в единой структуре документа Word. Жаль, что таковой нету...
PS И все-таки - MS издеваются!!!
Почитайте книгу о паттернах ООП (Гамма, Хельм, Джонсон, Влиссидес), там описывается как пример построение Word-подобного редактора. Так вот они почему-то смогли спроектировать структуру документа исходя из родителя одного типа, и документ получается единой структуры, а не так, как в MS: "Котлеты - отдельно, мухи - отдельно..."

Спасибо за внимание.


Вернуться в VBA

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

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

    TopList  
cron