Аскарон системс
Вчимося писати макроси для 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) +.