Аскарон системс — разработка сайтов и интернет-магазинов на 1С-Битрикс в Ростове-на-Дону +7 863 310-27-99
Внедрение Битрикс24:
+7 961 285 79 09
Разработка сайтов:
+7 904 500 83 58
Интеграция с 1С:
+7 908 172 65 15
Внедрение Битрикс24:
+7 961 285 79 09
Разработка сайтов:
+7 904 500 83 58
Интеграция с 1С:
+7 908 172 65 15

Учимся писать макросы для OpenOffice

26.09.2008

Учимся писать макросы для OpenOffice

Необходимые приемы для профессиональной работы с текстом. Показан пример с использованием макросов и регулярных выражений.

Задача: произвести обработку текста для статей:

  • удалить все пробелы и знаки табуляции из начала и конца абзацов,
  • заменить все дефисы на тире в тексте, в том числе и в самом начале абзацев.

Пример приводится для версии OpenOffice 2.4.0

Стандартное решение:

поиск и замена, нажимаем Ctrl+F

В примере мы пишем регулярное выражение удаляющее пробелы и знаки табуляции в начале абзаца.

Что сказать? Универсально. Но четыре раза на каждую статью писать регулярное выражение мне кажется слишком долго.

Другое решение:

Надо написать макрос. Это очень легко. В OpenOffice хорошая русская документация и есть встроенная поддержка регулярных выражений.

Найдите в меню Сервис → Mакросы → Управление макросами → OpenOffice.org Бэйсик...

Создайте макрос, например, под именем Typograph.

Код макроса:

Sub Typograph

  'здесь инициализируем объекты
    Dim Doc As Object
    Dim Replace As Object

  'указываем объект, с которым будем работать
    Doc = StarDesktop.CurrentComponent
  'создаем объект типа ReplaceDescriptor
    Replace = Doc.createReplaceDescriptor
  'объект работает с регулярными выражениями
    Replace.SearchRegularExpression = True

  'удаляем знаки табуляции и пробела в начале абзаца
    Replace.SearchString = "^( |\t)*"
    Replace.ReplaceString = ""
    Doc.replaceAll(Replace)

  'удаляем знаки табуляции и пробела в конце абзаца
    Replace.SearchString = "( |\t)*$"
    Replace.ReplaceString = ""
    Doc.replaceAll(Replace)

  'заменяем дефис на тире в середине текста
    Replace.SearchString = " - "
    Replace.ReplaceString = " — "
    Doc.replaceAll(Replace)

  'заменяем дефис на тире в начале абзаца
    Replace.SearchString = "^- "
    Replace.ReplaceString = "— "
    Doc.replaceAll(Replace)
End Sub

Сохраните и закройте окно Бэйсика. Оно больше не нужно. Теперь надо сделать так, чтобы макрос под названием «Typograph» вызывался по нажатию, например Ctrl+Shift+D.

Заходим в меню Сервис → Настойка:

Установите сочетание клавиш для макроса.

Возможно, вы увидите окно об ошибке:

Не бойтесь. Просто вы установили себе версию OpenOffice без JRE. Нажмите несколько раз «OK» и продолжайте. Всё прекрасно работает и без JRE.

Осталось проверить работу скрипта. Скопируйте следующий текст в редактор и нажмите Ctrl+Shift+D.

		     УРА!!!
	 Теперь я умею писать макросы   
   для OpenOffice. Можно      легко удалить все
лишние отступы в начале и в конце абзаца,
а также устанавливать тире вместо дефиса  
в начале абзаца, и - в середине.

- Я надеюсь,	 	вы освоили урок?

А теперь упражнение! Усовершенствуйте макрос. Пусть он заменяет последовательность из одного или более символов пробела и табуляции на один пробел во всем тексте. Выражение для поиска последовательности пробельных символов выглядит так ( |\t)+.

Артемий Зайцев


Возврат к списку

Контактная информация

Ростов-на-Дону, ул. Нансена, 135/11, офис 506

+7 863 310-27-99

+7 904 500 83 58
+7 908 172 65 15
Работает на «1С-Битрикс: Управление сайтом»