Страница 1 из 1

Дополнение ячеек в LibreOffice

Добавлено: 15 мар 2021, 14:03
broken
Всем добра! :hi2:
Дано. Рабочий макрос в 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.
Ну и если адаптировать, то сделать универсальным. К примеру по выделению. Выделил область и он (макрос) именно в этой области и работает. :hm:

Дополнение ячеек в LibreOffice

Добавлено: 15 мар 2021, 14:29
Chocobo
Если я тебя правильно понял, то можно и без макроса (галку на регулярки ток не забудь в окне поиска):
Снимок экрана в 2021-03-15 14-22-45.png
1
Снимок экрана в 2021-03-15 14-23-39.png
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], полученных от хранилищ изображений.