Аскарон системс

Вчимося писати макроси для OpenOffice

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

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

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

Приклад наводиться для версії OpenOffice 2.4.0

Стандартне рішення:

пошук і заміна, натискаємо Ctrl + F

У прикладі ми пишемо регулярний вираз видаляє пробіли і знаки табуляції на початку абзацу.

Що сказати? Універсально. Але чотири рази на кожну статтю писати регулярний вираз мені здається занадто довго.

Інше рішення:

Треба написати макрос. Це дуже легко. В OpenOffice гарна російська документація і є вбудована підтримка регулярних виразів.

Знайдіть в меню Сервіс → Mакроси → Управління макросами → OpenOffice.org Бейсік.

Створіть макрос, наприклад, під ім'ям 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.

А тепер вправа! Вдосконалить макрос. Нехай він замінює послідовність з одного або більше символів пробілу і табуляції на один пробіл у всьому тексті. Вираз для пошуку послідовності символів пробілів виглядає так (| \ t) +.