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

         

Операции над закладками


Оператор EditBookmark позволяет вам создать (удалить или перейти на) собственную закладку для места, где находится IP. Особенно часто нужны временные закладки, действующие только во время работы макрокоманды:
EditBookmark .Name = "tmp", .Add

Задание. Разберите пример использования этого оператора, приведённый в Справке к WinWord 7.0.
Оператор EditBookmark полностью соответствует опциям диалогового окна "Закладка" (Правка·Закладки...). Поэтому, созданные им закладки появятся в этом окне и будут доступны через меню WinWord. Формат оператора:
EditBookmark .Name=текст,[SortBy=число][,.Add][,.Delete][,.GoTo]

Аргумент





Аргумент


Назначение
SortBy
Задаёт порядок сортировки закладок при их выводе в списках: по алфавиту (0), по местоположению (1)
Add
Добавить закладку (значение по умолчанию, если другие аргументы не заданы)
Delete
Удалить закладку
GoTo
Переместить точку вставки по местоположению закладки


Операторы SetStartOfBookmark и SetEndOfBookmark помечают соответственно начало и конец выделенного элемента текста. Например:
myMark$ = "StartPoint"
SetStartOfBookmark "\Sel", myMark$
myMark1$ = "EndPoint"
SetEndOfBookmark "\Sel", myMark1$
.....
EditGoTo .Destination = myMark$
 
Предлагаемая в Справке
форма записи:
SetEndOfBookmark "\Sel", "EndPoint"
по непонятной для меня причине не работает.
 
Число закладок в документе возвращает функция Countbookmarks(), их имена – функция BookmarkName$(номер). Аргументом этой функции является номер
закладки в списке закладок документа (принимает значения от 1 до n, где n – общее число закладок в документе). Если аргумент функции не задан, возникает ошибка. Закладки следуют в этом списке в том порядке, в каком они встречаются в документе. Чтобы получить этот список, можно воспользоваться макрокомандой, приведённой в Справке. Обратите внимание, что массив в этом примере создаётся динамически.

Sub MAIN
всегоЗакладок = CountBookmarks()
размерМассива = всегоЗакладок - 1
Dim Закладки$(размерМассива)
For n = 0 To размерМассива
  Закладки$(n) = BookmarkName$(n + 1)
  MsgBox Закладки$(n)
Next n
End Sub
 
Функция GetBookmark$ (имя) считывает неформатированный текст, помеченный указанной закладкой. Если имя не является именем закладки в активном документе, то возвращается пустая строка.
Примеры:
1. Использование закладки /Cell и функции GetBookmark$ позволяет считать в переменную содержимое ячейки таблицы.
A$ = GetBookmark$("\Cell")
 
2. Считать в переменную second$ текст второй закладки документа.
second$ = GetBookmark$(BookmarkName$(2))
3. Считать в переменную текст абзаца, содержащего точку вставки.
текстАбзаца$ = GetBookmark$("\Para")
4. Текущую страницу (абзац, строку) документа можно выбрать с помощью команды EditGoTo с аргументом "\Page" (соответственно "\Para", "\Line"). При этом выделяется текущая страница (абзац, строка) целиком.
Sub MAIN
EditGoTo "\Page"
End Sub
 
Другая функция, CmpBookmarks(Закладка_1, Закладка_2), сравнивает две закладки и возвращает число соответствующее относительному положению и размерам закладок. Она используется для того чтобы организовать выполнение макрокоманды внутри определенного участка текста.
Интересны значения,
возвращаемые этой функцией сравнения:
0 – Закладка_1 и Закладка_2 эквивалентны;
1 – Закладка_1 полностью ниже Закладки_2;
2 – Закладка_1 полностью выше Закладки_2;
3 – Закладка_1 ниже и внутри Закладки_2;
4 – Закладка_1 внутри и выше Закладки_2;
5 – Закладка_1 включает в себя Закладку_2;
6 – Закладка_2 включает в себя Закладку_1;
7 – Закладка_1 и Закладка_2 начинаются в одной точке, но Закладка_1 длиннее;
8 – Закладка_1 и Закладка_2 начинаются в одной точке, но Закладка_2 длиннее;
9 – Закладка_1 и Закладка_2 заканчиваются в одной точке, но Закладка_1 длиннее;
10 – Закладка_1 и Закладка_2 заканчиваются в одной точке, но Закладка_2 длиннее;
11 – Закладка_1 расположена ниже и примыкает к Закладке_2
12 – Закладка_1 расположена выше и примыкает к Закладке_2
13 – одна из двух закладок не существует.
 
!!!Оператор InsertBookmark
– в Word 6.0 не существует.
Функция EmptyBookmark(Имя$) позволяет проверить, "пустая" закладка или нет. Пустая закладка определяет только местоположение для точки вставки в документе, но не помечает какой-либо текст. Функция возвращает -1, если закладка пустая, 0, если не пустая или не существует.
Существование закладки можно проверить с помощью функции ExistingBookmark(Имя$). Аналогично, она возвращает -1, если закладка существует, 0, если нет.
 

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