Это занятие мне хотелось бы
Это занятие мне хотелось бы начать с реального примера полезности написания макрокоманд. Как известно сейчас при всеобщем увлечении Интернетом большое количество текстовых файлов приходит в 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, но на мой взгляд это создает и немало проблем, так как предшествующие версии имеются уже у многих миллионов пользователей и нет явных причин массово переходить на новый язык.
Теперь двинемся дальше.