Страница 1 из 1
Дополнение ячеек в LibreOffice
Добавлено: 15 мар 2021, 14:03
broken
Всем добра!
Дано. Рабочий макрос в MS Excel
Код: Выделить всё
Sub kz()
'
' kz Макрос
'
'
Dim c As Range
For Each c In ActiveSheet.UsedRange
If Not IsEmpty(c.Value) Then c.Value = ",'" & c.Value & "'"
Next
End Sub
Его цель: пройтись по заполненным ячейкам и добавить соответствующие символы в начале и в конце текста ячеек.
В начале вставляется
,'
в конце
'
Задача: адаптировать под LibreOffice Calc.
Ну и если адаптировать, то сделать универсальным. К примеру по выделению. Выделил область и он (макрос) именно в этой области и работает.

Дополнение ячеек в LibreOffice
Добавлено: 15 мар 2021, 14:29
Chocobo
Если я тебя правильно понял, то можно и без макроса (галку на регулярки ток не забудь в окне поиска):

- 1

- 2
Дополнение ячеек в LibreOffice
Добавлено: 15 мар 2021, 14:30
rogoznik
broken, ссылку на документацию я тебе дал еще в чате - читай, там много интересного
Это весь код макроса
Код: Выделить всё
REM ***** BASIC *****
Option VBASupport 1
Sub kz
Dim c As Range
For Each c In ActiveSheet.UsedRange
If Not IsEmpty(c.Value) Then c.Value = ",'" & c.Value & "'"
Next
End Sub
Дополнение ячеек в LibreOffice
Добавлено: 15 мар 2021, 14:35
broken
Chocobo, хм. В самом деле! Спасибо!
Дополнение ячеек в LibreOffice
Добавлено: 15 мар 2021, 15:02
demonlibra
Это всё выглядит так как будто Вы используете электронные таблицы просто для замены символов в строках текста.
Какая конечная цель? Или для чего Вы это используете?
Если опишите задачу, может найдётся более удобное решение.
Дополнение ячеек в LibreOffice
Добавлено: 15 мар 2021, 16:13
broken
Способ, предоставленный
Chocobo подходит на все 100!
Задача - подготовить список для запроса SQL.
Исходно имеется список
Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.
Имеется база данных.
Вот к примеру и надо узнать у кого к примеру отсутствует мобильный телефон для контакта. В день приходит к примеру 75 человек.
Соответственно получаем.
Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.
Вот чтоб 75 раз не проставлять вот это всё в каждой строке! =)
Дополнение ячеек в LibreOffice
Добавлено: 15 мар 2021, 18:03
demonlibra
Доступ к исходным данным осуществляется через calc?
Можно назначить на горячие клавиши
Код: Выделить всё
# Получаем содержимое буфера обмена
data=`xclip -sel clip -o`
# Заменяем разделитель параметров на перенос строки
OIFS=$IFS
IFS=$'\n'
# Перебираем данные
for cell in $data
do
new_data="${new_data},'$cell'"
done
# Возвращаем разделитель переменных
IFS=$OIFS
# Вывод данных в терминал для отладки. Можно удалить.
echo -ne "${new_data:1}"
# Записываем результат в буфер обмена
echo -ne "${new_data:1}" | xclip -i -selection clipboard
Дополнение ячеек в LibreOffice
Добавлено: 16 мар 2021, 13:44
broken
demonlibra, т.е. выделить и запустить? Или ему файл скармливать?
Дополнение ячеек в LibreOffice
Добавлено: 16 мар 2021, 14:07
demonlibra
Если запустить сценарий, то содержимое буфера обмена будет обработано.
Для запуска сценария можно назначить горячие клавиши.
Дополнение ячеек в LibreOffice
Добавлено: 16 мар 2021, 14:34
broken
demonlibra, выхлоп четкий! Вот только не понял каким образом в начале запятой нет? Ведь итоговое значение определяется newdata?
Дополнение ячеек в LibreOffice
Добавлено: 16 мар 2021, 14:54
demonlibra
${new_data:1}
${string:position}
Извлекает подстроку из $string, начиная с позиции $position
Индексация начинается с 0
ПС Функционал можно расширить, добавить остальной текст запроса, сделать форму с выбором дополнительных данных, ...
Я для себя множество подобных рутинных задач таким образом решил. Например, этот сценарий я использую для автоматического обрамления ссылок bb-кодом [img], полученных от хранилищ изображений.