
- •Полезная информация по Макросам для OpenOffice - русский перевод
- •Оглавление
- •Введение
- •Сокращения и обозначения
- •Предисловие переводчика BuhCia
- •Доступные ссылки
- •Включенный материал
- •Ссылки на сайты
- •Переводы настоящего документа
- •Начало: концепция
- •Мой первый макрос: “Hello World”
- •Группировка текста программ
- •Отладка
- •Переменные, константы, строки и числовые типы
- •Обращение к объектам и создание объектов (Objects) в OpenOffice
- •Что же такое uno?
- •Структуры
- •Интерфейсы
- •Сервисы (Services)
- •Интерфейсы и сервисы (services)
- •Каков тип данного объекта?
- •Какие методы, свойства, интерфейсы и сервисы поддерживаются?
- •Языки, отличные от Basic
- •Метод CreateUnoService
- •Глобальная переменная ThisComponent
- •Глобальная переменная StarDesktop
- •Методы и свойства доступа к объектам в зависимости от языка
- •Примеры
- •Отладка и проверка макросов
- •Определить тип документа
- •Вывод всех интерфейсов, методов и свойств объекта
- •Средство X-Ray досюда
- •Начало (Dispatch): использование универсального сетевого объекта Universal Network Objects (uno)
- •Изменения механизма отправки (Dispatcher) в версии 1.1 oOo
- •Использование механизма отправки (dispatcher) требует пользовательского интерфейса.
- •Изменение меню - пример механизма отправки (dispatcher)
- •Прерывание команд меню с использованием Basic
- •Разные примеры
- •Вывод текста в строку состояния
- •Вывод всех стилей текущего документа
- •Пройтись по всем открытым документам
- •Вывести фонты и другую информацию об экране
- •Вывод поддерживаемых фонтов
- •Установка фонта по умолчанию с использованием ConfigurationProvider
- •Печать текущего документа
- •Печать текущей страницы
- •Другие параметны печати
- •Ландшафтная печать
- •Информация о конфигурации
- •Версия oOo
- •Язык (локаль) oOo
- •Открыть и закрыть документы (и рабочий стол)
- •Закрыть OpenOffice и/или документы
- •Что, если документ (файл) изменен?
- •Загрузка документа по адресу url
- •Полный пример
- •Сохранить документ с паролем
- •Создание нового документа на основе шаблона
- •Как разрешить макросы с помощью LoadComponentFromUrl
- •Обработка ошибок при загрузке документа
- •Пример использования Mail Merge для объединения всех документов в папке
- •Загрузка/Вставка графики в документ
- •Преобразование графического объекта как ссылки во встроенный графический объект.
- •Danny Brewer вставляет встроенный графический объект
- •Вставить графический объект, использую диспетчер (dispatch)
- •Встроить графический объект прямым методом
- •Установка полей
- •Установка размера бумаги
- •Вызов внешней программы (Internet Explorer) с помощью ole
- •Использовать команду Shell для файлов, содержащих пробелы
- •Чтение и Запись числа в файл
- •Создать числовой стиль формата
- •Посмотреть существующие числовые стили формата
- •Возвращает массив чисел Фибоначчи
- •Вставка теккста в качестве закладки (Bookmark)
- •Сохранение и экспорт документа
- •Поля пользователя
- •Информация о документе
- •Текстовые поля
- •Мастер-поля (Master)
- •Удаление текстовых полей
- •Вставка адреса url в ячейку oOo Calc
- •Добавление в текстовое поле установки выражения (SetExpression TextField)
- •Типы данных, определенные пользователем
- •Проверка орфографии, переносы и толковый словарь - тезаурус
- •Изменение указателя мыши
- •Установка фона страницы (Page Background)
- •Работа с буфером (clipboard)
- •Копировать ячейки электронной таблицы с помощью буфера системы Clipboard
- •Скопировать ячейки электронной таблицы без использования буфера системы
- •Получение типа содержимого (content-type) буфера системы Clipboard
- •Сохранение строки в буфер системы clipboard
- •Просмотреть буфер системы clipboard как текст
- •Альтернатива буферу системы clipboard – перемещаемое содержимое (transferable content)
- •Установка локали (языка)
- •Установки локали для выделенного текста
- •Автотекст (Auto Text)
- •Десятичные футы и дроби
- •Преобразовать число в слова
- •Отправка электронного письма
- •Библиотеки макросов
- •Словарь
- •Контейнер библиотеки модулей
- •Библиотеки
- •Где хранятся библиотеки?
- •Контейнер библиотек
- •Предупреждение о неопубликованных сервисах
- •Что означает загрузить (load) библиотеку?
- •Распространение и развертывание библиотеки
- •Установка размеров точечного рисунка (Bitmap)
- •Вставить, изменить размер, указать позицию изображения в документе oOo Calc.
- •Экспортировать изображение, задав его размер
- •Нарисовать линию в документе oOo Calc
- •Извлечение файла Zip
- •Другой пример Zip-файла
- •Упаковать в формат Zip целые папки
- •Выполнить макрос по строке с его именем
- •Выполнить макрос из командной строки
- •Выполнить указанный макрос в документе
- •Использование "приложения по умолчанию" для открытия файла
- •Распечатка перечня фонтов
- •Получить для документа: адрес url, имя файла и папку
- •Получить и установить текущую папку (directory)
- •Запись файла
- •Логический разбор синтаксиса (Parsing) xml
- •Работа с датами Dates
- •Встроен ли OpenOffice в Веб-браузер?
- •Активизировать (поставить на первый план) новый документ
- •Каков тип документа (основываясь на адресе url)
- •Соединиться с удаленным сервером oOo с использованием Basic
- •Панели инструментов
- •Создание панели инструментов для типа компонентов
- •Моя первая панель инструментов (toolbar)
- •Макросы электронных таблиц Calc
- •Является ли этот документ электронной таблицей?
- •Вывести для ячейки электронной таблицы значение (value), строковое значение (string) и формулу (formula)
- •Установить для ячейки электронной таблицы значение (value), формат (format), текстовое значение (string) и формулу (formula)
- •Ссылка на ячейку в другом документе
- •Очистка ячейки
- •Выделенный (Selected) текст - что это?
- •Простой пример обработки выделенных ячеек
- •Получить активную ячейку игнорировать остальное
- •Выделить (Select) ячейку
- •Удобный для чтения (Human readable) адрес ячейки
- •Вставить форматированную дату в ячейку
- •Более короткий путь для этого
- •Вывести выделенный интервал ячеек (selected range) в окно сообщения
- •Заполнить выделенный интервал ячеек заданным текстом
- •Некоторые данные и статистика о выделенном интервале ячеек
- •(Именованный) Интервал ячеек базы данных
- •Определить выбранные ячейки в качестве (именованного) интервала ячеек базы данных
- •Удалить (именованный) интервал ячеек базы данных
- •Границы таблицы
- •Интервал ячеек для сортировки
- •Вывести все данные столбца
- •Использование методов объединения (Outline, Grouping)
- •Защита данных
- •Установка текстов верхнего и нижнего заголовков
- •Копирование ячеек электронной таблицы
- •Копирование листа целиком в новый документ
- •Выделить именованный интервал ячеек (named range)
- •Выделить столбец целиком
- •Выделить строку целиком
- •Преобразовать данные из столбца определенного вида в строки
- •Включить/Выключить автоматический пересчет
- •Какие ячейки листа используются?
- •Поиск в электронной таблице Calc
- •Напечатать интервал ячеек электронной таблицы
- •Объединена ли эта ячейка (с другими)?
- •Написать свою функцию электронной таблицы Calc
- •Функции Calc, определенные пользователем
- •Оценка и проверка аргументов
- •Каков тип возвращаемого значения
- •Не изменяйте значений других ячеек электронной таблицы
- •Макросы текстового документа (Writer)
- •Что такое выделенный текст?
- •Находится ли курсор в текстовой таблице?
- •Можно ли проверить текущее выделение для текстовой таблицы (TextTable) или ячейки (Cell)?
- •Что такое текстовые курсоры (Text Cursors)?
- •Нельзя передвинуть курсор к "якорю" (anchor) TextTable.
- •Вставка чего-либо перед (или после) текстовой таблицы.
- •Можно передвинуть курсор на закладку (Bookmark anchor).
- •Вставка текста в место закладки
- •Работа с текстом (Andrew's Selected Text Framework)
- •If ничего не выделено then
- •Выделен ли текст?
- •Как получить выделенную область (Selection)
- •Выделенный текст: Какой конец - начало, какой - конец
- •Работа макроса с выделенным текстом (Selected Text Framework Macro)
- •Непригодный фрейм (Rejected Framework)
- •Приемлемый способ (Framework)
- •Основной рабочий макрос
- •Подсчет числа предложений
- •Удаление пустых промежутков текста и пустых строк, более подробный пример
- •Определение пробела (White Space)
- •Последовательности символов для удаления
- •Стандартный макрос перебора выделенного текста
- •"Рабочий" макрос
- •Удаление пустых параграфов, другой пример
- •Выделенный текст, вопросы скорости выполнения, подсчет слов
- •Поиск в выделенном тексте для подсчета слов
- •Использование строк (Strings) для подсчета числа слов
- •Использование курсора (Character Cursor) для подсчета числа слов
- •Использование курсора слов (Word Cursor) для подсчета числа слов
- •Итоговые размышления о подсчете числа слов и скорости выполнения
- •Подсчет слов: нужно использовать вот этот макрос!
- •Замена выделенного пробела с использованием строк (Strings)
- •Сравнение макросов, основанных на курсорах, и макросов, основанных на извлечении строк (String)
- •Установка атрибутов текста
- •Вставить текст
- •Вставить новый параграф (paragraph)
- •Вставить форматированное поле даты в документ oOo Writer
- •Вставка примечания (аннотация)
- •Вставка новой страницы
- •Удаление разрывов страниц
- •Установить стиль страницы в документе
- •Включение и выключение верхних и нижних заголовков
- •Вставить ole-объект
- •Установка стиля параграфа (Paragraph)
- •Создать свой собственный стиль
- •Поиск и замена
- •Замена текста
- •Поиск в выделенном тексте
- •Сложный поиск и замена
- •Поиск и замена с атрибутами и регулярными выражениями (Regular Expressions)
- •Искать только первую текстовую таблицу
- •Изменение строчных букв на прописные и наоборот (Case) в словах
- •Перебор параграфов (поведение текстового курсора)
- •Форматирование параграфов с макросами (пример)
- •Находится ли курсор в последнем параграфе
- •Что означает перебрать содержимое текста?
- •Перебор текста и поиск текстового содержимого (content)
- •Но я только хочу найти графические объекты
- •Найти текстовое поле, содержащееся в текущем параграфе?
- •Где находится курсор дисплея (Display Cursor)?
- •Какой курсор нужно использовать для удаления строки или параграфа
- •Удалить текущую страницу
- •Вставка индекса или оглавления (table of contents)
- •Вставка адреса url в документ oOo Writer
- •Сортировка текста
- •Нумерация структур (Outline)
- •Текстовые секции (sections)
- •Встивить текстовую секцию, установка столбцов и значений ширины
- •Сноски на странице (Footnotes) и сноски в конце текста (Endnotes)
- •Текстовые таблицы
- •Поиск текстовых таблиц
- •Где находится текстовая таблица
- •Перебор (Enumerating) всех текстовых таблиц.
- •Перебор ячеек в текстовой таблице.
- •Простые текстовые таблицы
- •Форматирование простой текстовой таблицы
- •Что такое сложная текстовая таблица
- •Перебор ячеек в любой текстовой таблице
- •Извлечение данных из простой текстовой таблицы
- •Курсоры таблицы и интервалы ячеек
- •Интервалы ячеек (Cell ranges)
- •Использование интервала ячеек для очистки ячеек
- •Данные диаграммы (Chart data)
- •Ширина столбцов
- •Установка оптимальной ширины столбца
- •Насколько широка текстовая таблица?
- •Курсор в текстовой таблице
- •Установить курсор после текстовой таблицы
- •Создание текстовой таблицы
- •Форматирование макроса
- •Утилиты для строк и массивов
- •Специальные символы и числа в строках
- •Массивы строк
- •Утилиты для поиска разделов/секций с кодами макросов
- •Основной модуль макроса
- •Первичные точки входа
- •Основной рабочий макрос
- •Введение
- •Диалоги
- •Элементы управления
- •Текст/метка элемента управления (Control Label)
- •Управляющая кнопка (Button)
- •Поле текста (Text Box)
- •Поле списка (List Box)
- •Комбинированное поле: ввод с присоединенным списком (Combo Box)
- •Поле флажка (Check Box)
- •Кнопка "радио" (включена/выключена) (Option/Radio Button)
- •Индикатор выполнения (Progress Bar)
- •Получение элементов управления (Controls)
- •Управление размерами и местоположением элементов управления по именам
- •Какой элемент управления вызвал обработку и где он расположен?
- •Выбор файла с использованием диалога (File Dialog)
- •Центрировать диалог на экране
- •Установить перехватчик события (event listener) для элемента управления
- •Управление диалогом я не создал.
- •Вставка формулы
- •Раскрытие доступного содержимого (автор Andrew)
- •Выполнение манипуляций с диалогом Опции (Options)
- •Листинг поддерживаемых принтеров
- •Поиск открытого окна
- •Исследование доступного содержимого (автор ms777)
- •База данных (Database)
- •Пример по инвестициям (Investment)
- •Использование только простых процентов
- •Сложные проценты
- •Обработчики (Handlers) и перехватчики (Listeners)
- •XKeyHandler пример
- •Перехватчик (Listener), описанный автором Paolo Mantovani
- •Функция CreateUnoListener (создать перехватчик)
- •Хорошо, но что этот макрос делает?
- •Как я знаю, какие методы создавать?
- •Пример 1: com.Sun.Star.View.XSelectionChangeListener
- •Пример 2: com.Sun.Star.View.XPrintJobListener
- •Пример 3: com.Sun.Star.Awt.XKeyHandler
- •Небольшие дополнения от автора Andrew
- •Замечания о клавишах модификации (Ctrl и Alt)
- •Пример 4: com.Sun.Star.Awt.XMouseClickHandler
- •Пример 5: Ручная привязка к событиям
- •Что произошло с моим перехватчиком ActiveSheet?
- •Язык (Language)
- •Страшные глобальные переменные (Global) и статические (Statics)
- •Булевские переменные
- •Целые переменные (Integer)
- •Использовать тип переменной Object или Variant
- •Константы (Constants)
- •Массивы (Arrays)
- •Опция начала индексов массивов Option Base
- •Изменение числа элементов массива ReDim
- •Изучение объектов
- •Операторы сравнения
- •Функции (Functions) и процедуры (SubProcedures)
- •Необязательные параметры
- •Передача параметров по ссылке (By Reference) или по значению (Value)
- •Рекурсия (Recursion)
- •Управление последовательностью выполнения программы (Flow Control)
- •Операторы If Then Else
- •Оператор Choose
- •Оператор Select Case
- •Выражения в операторах Case
- •Простой, но неправильный пример
- •Неверный пример с интервалом
- •Неверный пример с интервалом
- •Интервалы, правильный способ
- •Цикл While...Wend
- •Переход к процедуре GoSub
- •Оператор GoTo
- •Конструкция On ... GoTo
- •Операторы Exit
- •Обработка ошибок
- •Определяем, как обрабатывать ошибку
- •Написать обработчик ошибок
- •Пример обработки ошибок
- •Операторы и их старшинство Operators и Precedence
- •Действия со строками
- •Удалить символы из строки
- •Удалить текст из строки
- •Печать кодов ascii символов строки
- •Удалить все экземпляры заданной подстроки из исходной строки
- •Работа с числами
- •Работа с датами
- •Работа с файлами
- •Операторы в выражениях, операторы программы, функции
- •Оператор вычитания (-)
- •Оператор умножения (*)
- •Оператор деления (/)
- •Оператор and
- •Функция Abs
- •Функция создания массива Array
- •Функция Asc
- •Функция atn (арктангенс)
- •Оператор Beep
- •Функция Blue
- •Ключевое слово ByVal
- •Ключевое слово Call
- •Функция cBool
- •Функция cByte
- •Функция cDate
- •Функция cDateFromIso
- •Функция cDateToIso
- •Функция cDbl
- •Оператор ChDir - нежелателен
- •Оператор ChDrive - нежелателен
- •Функция Choose
- •Функция Chr
- •Функция cInt
- •Функция cLng
- •Оператор Close
- •Оператор константы Const
- •Функция ConvertFromUrl
- •Функция ConvertToUrl
- •Функция косинуса Cos
- •Функция создания диалога CreateUnoDialog
- •Функция CreateUnoService
- •VMessage.Setsubject("Это моя тестовая тема письма")
- •Функция CreateUnoStruct
- •Функция cSng
- •Функция cStr
- •Функций CurDir
- •Функций Date
- •Функция DateSerial
- •Функция DateValue
- •Функция Day
- •Оператор объявления Declare
- •Оператор DefBool
- •Оператор DefDate
- •Оператор DefDbl
- •Оператор DefInt
- •Оператор DefObj
- •Оператор DefVar
- •Оператор Dim
- •Функция DimArray
- •Функция Dir
- •Операторы Do...Loop
- •Оператор End
- •Функция Environ
- •Функция eof
- •Функция EqualUnoObjects
- •Оператор eqv
- •Функция Erl
- •Функция Err
- •Оператор Error не работает так, как описано
- •Функция Error
- •Оператор Exit
- •Функция Exp
- •Функция FileAttr
- •Оператор FileCopy
- •Функция FileDateTime
- •Функция FileExists
- •Функция FileLen
- •Функция FindObject
- •Функция FindPropertyObject
- •Фунукция Fix
- •Конструкция For...Next
- •Функция Format
- •Функция FreeFile
- •Функция FreeLibrary
- •Оператор Function
- •Оператор Get
- •Функция GetAttr
- •Функция GetProcessServiceManager
- •Функция GetSolarVersion
- •Функция GetSystemTicks
- •Ключевое слово GlobalScope
- •Оператор GoSub
- •Оператор GoTo
- •Функция Green
- •Функция HasUnoInterfaces
- •Функция Hex
- •Функция Hour
- •Оператор If
- •Функция iif
- •Оператор Imp
- •Оператор Input
- •Функция InputBox
- •Функция InStr
- •Функция Int
- •Функция IsArray
- •Функция IsDate
- •Функция IsEmpty
- •Функция IsMissing
- •Функция IsNull
- •Функция IsNumeric
- •Функция IsObject
- •Функция IsUnoStruct
- •Функция Kill
- •Функция lBound
- •Функция lCase
- •Функция Loc
- •Функция Lof
- •Функция Log
- •Оператор Loop
- •Оператор lSet
- •Функция lTrim
- •Ключевое слово Private
- •Ключевое слово Public
- •Функция Red
- •Оператор rSet
- •Функция Shell
- •Функция uBound
- •Функция uCase
- •Программисты на Visual Basic
- •Активная рабочая книге ActiveWorkbook
- •Активный лист и активная ячейка (ActiveSheet и ActiveCell)
- •Дополнения переводчика BuhCia
- •Пример макроса, исправляющего оглавление.
- •Алфавитный указатель (Index)
Что же такое uno?
UNO (Universal Network Object, Универсальный сетевой объект) был создан, чтобы каждая среда (окружение) environment могла успешно взаимодействовать с каждой другой средой (окружением) . Почему это нужно? Потому что разные языки программирования и разные среды (окружения) могут иметь разные способы представления одного и того же типа данных. Даже целые числа, наиболее простая вещь, могут быть представлены разными способами на разных компьютерах и разных языках программирования.
UNO определяет множество базовых типов, таких как строки, целые числа и т.д. (поэтому они будут одними и теми же в разном окружении).
объекты UNO могут иметь методы (метод может возвращать значение и может принимать аргументы).
объектыUNOмогутиметьсвойства.Свойство может быть другим объектом UNO или может иметь простой тип. Свойство может также быть необязательным (опциональным).
объекты UNO определены с использованием сложного (для большинства читателей) Языка Определения Интерфейса Interface Definition Language (UNO IDL). Хотя Вам может не понравиться изучение UNO IDL, именно он определяет свойства и методы, которые поддерживают объекты.
Предположим, что я имею окружение UNO в языке Basic, и другое окружение в языке Java. Для того, чтобы окружение UNO использовало объект, все, что требуется - определение объекта на языке UNOIDL. Эти окружения могут легко передавать объекты туда и обратно.
Я использую OOo API для взаимодействия с OOo. Эта технология API может возвращать:
внутренний тип UNO такой как число с плавающей точкой, целое число и т.д.
константы - значения, обычно числовые, связанные с именем константы. Например, обычный текст имеет размер фонта, определяемый константой com.sun.star.awt.FontWeight.NORMAL, которая равна 100.0.
нумерации, использующие имя похожее на com.sun.star.awt.FontSlant.ITALIC, но они обычно связаны с целым числом, даже если значение нумератора не выводится на печать.
Структуры - это объекты со свойствами, но не имеющие методов. Сам по себе факт, что объект не имеет методов, не обязательно означает, что это структура. Объектдолженбытьименноопределенкакструктура.
UNO объект с методами и (или) свойствами.
Структуры
Стурктуры, которые определены с помощью OpenOffice.org, могут быть проверены с использованием метода IsUNOStruct().
Листинг 3.6.1.1: Проверка на структуру UNO.
Sub ExamineStructures
Dim oProperty As New com.sun.star.beans.PropertyValue
With oProperty
.name = "Joe"
.value = 17
End With
Print oProperty.Name & " is " & oProperty.Value
If IsUNOStruct(oProperty) Then
Print "oProperty is an UNO Structure"
End If
End Sub
Хотя Вы можете определить и использовать свои структуры, IsUNOStruct() не распознает их как структуры.
Интерфейсы
ПочтивсеобъектыOOoподдерживаютсервисы (службы, services)иинтерфейсы (interface).Когда здесь используется слово "интерфейс", связанное с каким-либо объектом, то это слово всегда означает набор методов, которые этот объект поддерживает. Например, если объект поддерживает интерфейс com.sun.star.frame.XStorable или короче XStorable, то объект поддерживает методы, перечисленные в Таблице 3.
Таблица 3. Методы, определенные интерфейсом XStorable.
-
Метод
Описание
hasLocation
Возвращает true если объект имеет сведения о его расположении, либо потому, что он был загружен оттуда, либо потому, что он был сохранен туда.
getLocation
Возвращает адрес URL , куда объект был сохранен.
isReadonly
(только для чтения) Если возвращает true, нельзя вызывать метод store().
store
Сохраняет данные по адресу URL , откуда они были загружены.
storeAsURL
СохраняетобъектпоуказанномуадресуURL.Последующие вызовы метода store будут использовать этот адрес URL.
storeToURL
Сохраняет объекта по указанному адресу URL, но это не меняет адрес URL документа.
Макрос в Листинге 29 проверяет, поддерживает ли компонент интерфейс XStorable. Еслида,томакросиспользуетметодыhasLocation()иgetLocation(). Проверка необходима потому, что, возможно, возвращаемый компонент не будет поддерживать интерфейс XStorable или данный документ не был сохранен и поэтому не имеет сведений о расположении, которые могли бы быть напечатаны.