Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

1 Ноябрь 2020, 03:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Writer. Рассылка писем  (Прочитано 952 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Roadroller
Участник
**
Offline Offline

Пол: Мужской
Расположение: Tomsk
Сообщений: 7


« Стартовое сообщение: 19 Август 2020, 11:42 »

Доброго времени суток.
Возник следующий вопрос:
Есть документ Calc, в котором я написал макрос(функцию) результат выполнения записан в ячейку.
Этот документ Calc я использую в документе Writer в качестве источника данных.
Все нужные места заполняются данными из документа Calc, кроме данных полученных в результате выполнения макроса(функции).
При этом если открыть документ Calc, данные на месте.
Каким образом заставить отрабатывать макрос в таблице, которая используется источником данных для документа?
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #1: 19 Август 2020, 11:48 »

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

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

С уважением,
Михаил Каганский
Roadroller
Участник
**
Offline Offline

Пол: Мужской
Расположение: Tomsk
Сообщений: 7


« Ответ #2: 19 Август 2020, 12:06 »

Режим безопасности минимальный, добавление в в доверенную локацию не помогло. При помещении макроса в общую библиотеку вызывает ошибку исполнения макроса в таблице Calc.
Проблема видимо разрешениях
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #3: 19 Август 2020, 12:11 »

У меня Ваш макрос отсюда, помещённый в My Macros & Dialogs/Standard/Module1, работает в Calc без ошибок... (если речь о нём.)
Записан

С уважением,
Михаил Каганский
economist
Форумчанин
***
Offline Offline

Сообщений: 1 298


« Ответ #4: 19 Август 2020, 12:25 »

Макрос сохраняет сам ODS? У меня после работы макроса и сохранения ODS - повторное Ctrl+Shift+F4 отражает добавленное макросом в ODB, а значит и в ODT.  
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #5: 19 Август 2020, 12:31 »

У меня Ваш макрос отсюда, помещённый в My Macros & Dialogs/Standard/Module1, работает в Calc без ошибок... (если речь о нём.)

Хотя нет, после перезагрузки документа, конечно, ругается на некорректный ThisComponent при открытии... забыл совсем.
Записан

С уважением,
Михаил Каганский
Roadroller
Участник
**
Offline Offline

Пол: Мужской
Расположение: Tomsk
Сообщений: 7


« Ответ #6: 19 Август 2020, 12:38 »

У меня Ваш макрос отсюда, помещённый в My Macros & Dialogs/Standard/Module1, работает в Calc без ошибок... (если речь о нём.)
Макрос от туда Улыбка
Записан
Roadroller
Участник
**
Offline Offline

Пол: Мужской
Расположение: Tomsk
Сообщений: 7


« Ответ #7: 19 Август 2020, 12:46 »

повторное Ctrl+Shift+F4
в ODT результат выполнения макроса 0.
Макрос в ODS
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #8: 19 Август 2020, 13:00 »

Кстати, а для чего Вам пользовательская функция? Это ведь можно сделать формулой типа

Код:
=TEXTJOIN(";";1;OFFSET($Роли.$B$3;0;MATCH(C7;$Роли.$B$1:$CV$1;0)-1;58;1))
Записан

С уважением,
Михаил Каганский
economist
Форумчанин
***
Offline Offline

Сообщений: 1 298


« Ответ #9: 19 Август 2020, 13:10 »

в ODT результат выполнения макроса 0.

Наверно вы используете в ODT Сервис - Рассылка писем - Добавить ODS. Это очень ограниченный режим рассылки.

Лучше так. Создаем ODB, слинкованную с ODS и используем ODB в ODT, по нажатию Ctrl+Shift+F4, перетаскиваем поля вручную, дальше кнопки Слияния или Данные в поля для одного документа.

Тогда все сохранения (ручные, макросом итд) в ODS - обновят данные по повторному нажатию Ctrl+Shift+F4 и в ODB, и в ODT (в полях слияния). Чтобы ODS был доступен для записи - окно Диспетчера данных нужно закрывать (Ctrl+Shift+F4).  
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Roadroller
Участник
**
Offline Offline

Пол: Мужской
Расположение: Tomsk
Сообщений: 7


« Ответ #10: 19 Август 2020, 13:29 »

Кстати, а для чего Вам пользовательская функция? Это ведь можно сделать формулой типа

Код:
=TEXTJOIN(";";1;OFFSET($Роли.$B$3;0;MATCH(C7;$Роли.$B$1:$CV$1;0)-1;58;1))
Роли это матрица доступа, где перечислены пользователи(по оси Х) и весь перечень ролей(по оси У) на пересечении стоит "ДА" если данная роль выдана пользователю. Зная пользователя я составляю строку из выданных ролей, дабы внести ее в документ.
Насколько я понимаю MATCH вернет только первое встретившееся значение.
Функцию я написал потому что ее проще осмыслить, чем собирать конструкцию, которую я через пол года не вспомню
Записан
Roadroller
Участник
**
Offline Offline

Пол: Мужской
Расположение: Tomsk
Сообщений: 7


« Ответ #11: 19 Август 2020, 13:33 »

Наверно вы используете в ODT Сервис - Рассылка писем - Добавить ODS. Это очень ограниченный режим рассылки.
Для моей задачи вполне годится, иначе мне проще выкурить мануал MVC Core и настрогать вэб морду под базу. Но спасибо погляжу в сторону ODB, но там то же есть свои особенности, хотя бы постоянная ругань на отсутствие java.
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #12: 19 Август 2020, 13:34 »

Роли это матрица доступа, где перечислены пользователи(по оси Х) и весь перечень ролей(по оси У) на пересечении стоит "ДА" если данная роль выдана пользователю. Зная пользователя я составляю строку из выданных ролей, дабы внести ее в документ.
Ну, в Вашей функции с AskLibO Вы просто собирали несколько "ДА" вместе, что не давало никакого представления о том, откуда это ДА пришло.
Насколько я понимаю MATCH вернет только первое встретившееся значение.
Да, первое значение ФИО. Затем OFFSET вернёт полный столбец под ним.
Функцию я написал потому что ее проще осмыслить, чем собирать конструкцию, которую я через пол года не вспомню
Ну, это конечно Вам решать. Но похоже, проблема есть с обработкой пользовательских функций.
« Последнее редактирование: 19 Август 2020, 13:36 от mikekaganski » Записан

С уважением,
Михаил Каганский
Roadroller
Участник
**
Offline Offline

Пол: Мужской
Расположение: Tomsk
Сообщений: 7


« Ответ #13: 19 Август 2020, 13:42 »

Ну, в Вашей вункции с AskLibO Вы просто собирали несколько "ДА" вместе
ага, это потому что с номерами строк и столбцов запутался. В текущей реализации функция собирает роли выданные пользователю, все как и задумано.
 
Но похоже, проблема есть с обработкой пользовательских функций.
Решил копированием "как текст" результата работы функции в соседную ячейку. Неудобно, но несомненно удобнее чем набирать все в ручную.
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 298


« Ответ #14: 19 Август 2020, 14:08 »

постоянная ругань на отсутствие java.

jPortable с portableapps.com решает проблему с JAVA навсегда.

Java нужна хотя бы ради LanguageTools. Для рассылки она не нужна. 


Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!