Операции над закладками
Оператор 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, если нет.