Язык WordBasic - практический подход

       

Это занятие мне хотелось бы



Это занятие мне хотелось бы начать с реального примера полезности написания макрокоманд. Как известно сейчас при всеобщем увлечении Интернетом большое количество текстовых файлов приходит в HTML-формате. К сожалению в WinWord отсутствует фильтр для чтения таких файлов. Проблема в том, что этот язык гипертекстовой разметки вставляет в текст очень много своих специальных значков, которые затем интерпретируются программами просмотра (браузерами). Следующая макрокоманда очищает загруженный в Word HTML-документ от знаков разметки, оставляя только те из них, которые несут полезную информацию. Я прогонял её на текстах пресс-релизов корпорации Intel, получая вполне читабельный текст, который можно было обрабатывать дальше.
Sub MAIN
Dim H$(35)
 H$(0) = "<HTML>"
 H$(1) = "<TITLE>"
 H$(2) = "</TITLE>"
 H$(3) = "</HEAD>"
 H$(4) = "<P>"
 H$(5) = "<UL>"
 H$(6) = "</UL>"
 H$(7) = "<H2>"
 H$(8) = "</H2>"


 H$(9) = "<B>"
 H$(10) = "</B>"
 H$(11) = "<LI>"
 H$(12) = "<U>"
 H$(13) = "</A>"
 H$(14) = "<HEAD>"
 H$(15) = "<H1>"
 H$(16) = "</H1>"
 H$(17) = "<I>"
 H$(18) = "</I>"
 H$(19) = "<BR>"
 H$(20) = "<H3>"
 H$(21) = "</H3>"
 H$(22) = "<ADDRESS>"
 H$(23) = "</ADDRESS>"
 H$(24) = "<CENTER>"
 H$(25) = "<HR>"
 H$(26) = "<BODY>"
 H$(27) = "</BODY>"
 H$(28) = "</HTML>"
 H$(29) = "<H4>"
 H$(30) = "</H4>"
 H$(31)= "</FONT>"
 H$(32)="</CENTER>"
 For i = 0 To 32
   StartOfDocument
   EditReplace .Find = H$(i), .Replace = "", .ReplaceAll
 Next i
End Sub
 
Сама по себе макрокоманда выглядит скучновато (на самом деле она вдвое длиннее). Но по существу в ней всего три оператора: В цикле осуществляется замена в документе всех элементов, занесённых в символьный массив H$, на пустую строку. Для этого после каждого прохода точка вставки возвращается в начало документа. Все предшествующие циклу присваивания лишь подготавливают данный массив. На этом примере видно, что в языке не хватает средств инициализации массивов.
В версии WinWord 8.0 язык WordBasic заменён на Visual Basic, но на мой взгляд это создает и немало проблем, так как предшествующие версии имеются уже у многих миллионов пользователей и нет явных причин массово переходить на новый язык.
Теперь двинемся дальше.
 

Содержание раздела