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

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

20 Июнь 2019, 22:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 4 »   Вниз
  Печать  
Автор Тема: Собрать данные из нескольких книг в один XLS  (Прочитано 2556 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 2 674



« Ответ #15: 20 Декабрь 2018, 00:24 »

Можно я спрошу простую штуку: почему именно xls? И почему для обработки xls выбран ЛибреОфис? Тем более, если дальше будет кто то еще а мсофисе это глядеть
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
Mike_B
Участник
**
Offline Offline

Сообщений: 27


« Ответ #16: 20 Декабрь 2018, 07:59 »

Справка формируется на php, под линуксом, запросы к мэйнфрейму, по ночам. А смотрит ее большой начальник по утрам под виндой, понятно. Сейчас сменные работники перекачивают исходные файлы в нужное время и запускают MS Excel со скриптом автостарта, который объединяет, а потом высылают почтой. Вот это хотят автоматизировать.
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 2 674



« Ответ #17: 20 Декабрь 2018, 10:00 »

Справка формируется на php, под линуксом, запросы к мэйнфрейму, по ночам
а сформировать готовый отчет сразу из php нельзя что ли? Сразу в том виде, в котором его будет глядеть "большой начальник". И показывать этот отчет на внутреннем сайте компании с ограниченным доступом...
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
Mike_B
Участник
**
Offline Offline

Сообщений: 27


« Ответ #18: 20 Декабрь 2018, 10:28 »

а сформировать готовый отчет сразу из php нельзя что ли?
С их слов - при сборе xls на php он (php) затыкается примерно на 20-м листе, а их уже 52. Я в php не спец и не могу сказать, что там подкрутить или на что заменить. На сервере не только эта справка крутится, но и много чего еще, потому можно ли заменять - тоже не в курсе. Надо же, чтоб остальное не полетело.
Записан
Mike_B
Участник
**
Offline Offline

Сообщений: 27


« Ответ #19: 20 Декабрь 2018, 10:30 »

Доброе утро!

Тестирую вариант, предложенный вчера уважаемым JohnSUN, а именно запуск макроса с параметрами.

В файле tab1.ods у меня есть модуль XLS_mod, в котором играюсь с макросами из Питоньяка.

Дописал в него простой макрос:

Код:
Sub CheckParam(Optional x1 As String, Optional x2 As String)    ' собственно процедура
   If IsMissing(x1) Then x1 = "<Missing>"
   If IsMissing(x2) Then x2 = "<Missing>"
   MsgBox "Param 1 = " & x1 & chr(10) & "Param 2 = " & x2
end sub

Тестирую его при помощи вызова tstpar:

Код:
Sub tstpar      ' Тестируем процедуру с и без параметров
   Call CheckParam()
   Call CheckParam("test")
   Call CheckParam("/home/someuser/path1", "D:\Work\template\")
end sub

Это работает правильно: в 1-й раз выдает, что оба параметра отсутствуют, во 2-й - что есть один параметр и отсутствует другой, в 3-й - показывает оба параметра, как они есть.

Теперь пытаюсь запустить автоматом при помощи команды:

Код:
"C:\Program Files\LibreOffice 5\program\soffice.exe" -headless -norestore D:\Work\Libre\tab1.ods "macro://tab1/Standard.XLS_mod.CheckParam"

Запускается Calc и ничего более не происходит. В варианте "...XLS_mod.CheckParam()" тоже ничего.

Если запустить двойным щелчком tab1.ods и выбрать Alt-F11 - tab1.ods - Standard - XLS_mod и ткнуть в CheckParam - Выполнить, то оно отрабатывает.

Подскажите, пожалуйста, где я путаюсь?


* call.gif (48.18 Кб, 1024x810 - просмотрено 4 раз.)
Записан
mikekaganski
Мастер
*****
Offline Offline

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


« Ответ #20: 20 Декабрь 2018, 10:43 »

Попробуйте без --headless (кстати, варианты с одним - должны выдавать предупреждения, что такой вызов считается устаревшим, и должны быть --). ЕМНИП, вызов макроса не очень совместим с --headless - там нужно вместо этого в макросе прописывать закрытие программы.

https://ask.libreoffice.org/en/question/167512/how-to-run-a-single-macro-for-all-excel-files/
« Последнее редактирование: 20 Декабрь 2018, 10:46 от mikekaganski » Записан

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

Сообщений: 27


« Ответ #21: 20 Декабрь 2018, 10:55 »

Попробуйте без --headless
Вы правы, без этого макрос запускается. Но тогда он спрашивает, включить ли макросы (хотя у меня стоит Сервис - Параметры - Безопасность - Безопасность макросов - Средний). Вариант JohnSUN для запуска из из "Мои макросы" вопросов не задавал.
Более того, запуск "нашего" макроса для сбора файлов после еще и вопрос "обновить ли связи" задает. И файл само не сохраняет. А надо, чтоб на автомате отработало. Хотя сохранение в макросе есть же. Что следует дописать?
Записан
mikekaganski
Мастер
*****
Offline Offline

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


« Ответ #22: 20 Декабрь 2018, 10:58 »

Вопрос о запуске макросов *из файла* на среднем уровне безопасности - это правильно. Макросы из библиотеки - это другое, это "свои". А безопасность - это про макросы, о которых мы ничего не знаем, которые пришли к нам из документа, и могут оказаться чем угодно.
Записан

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

Сообщений: 27


« Ответ #23: 20 Декабрь 2018, 11:07 »

Вопрос о запуске макросов *из файла*
Хорошо, какой тогда лучший способ будет передать это на другую машину? В ots сидит схема импорта - ссылки на листы xls. Если макрос положить в библиотеку - так она у меня на компе останется, если я ots им отдам. Потому и пытаюсь либо в ots файл запихать ("все в одном"), либо отдельный ods с ним и запускать оттуда.
Записан
mikekaganski
Мастер
*****
Offline Offline

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


« Ответ #24: 20 Декабрь 2018, 11:11 »

Об этом @JohnSUN и писал, когда предлагал оформить это всё в виде расширения (oxt).
Записан

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

Сообщений: 27


« Ответ #25: 20 Декабрь 2018, 11:15 »

Об этом @JohnSUN и писал, когда предлагал оформить это всё в виде расширения (oxt).
А как их создавать/применять? Опыта в LO - одна неделя. По виду они для меню, а хочется из командной строки выполнить.
Записан
mikekaganski
Мастер
*****
Offline Offline

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


« Ответ #26: 20 Декабрь 2018, 11:17 »

Тут вопросы к тем, кто это делал (например, к @kompilainenn). Расширения - они не только для меню, они для всего. Самое главное - что расширение может установить макросы в библиотеку. Если надо, можно и шаблон туда запихать, чтоб уж всё в одном (но тогда шаблон будет "неизменяемым") Улыбка
Записан

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

Сообщений: 27


« Ответ #27: 20 Декабрь 2018, 11:23 »

Тут вопросы к тем, кто это делал (например, к @kompilainenn). Расширения - они не только для меню, они для всего. Самое главное - что расширение может установить макросы в библиотеку.
Как интересно! Подождем, может, @kompilainenn или @JohnSUN подскажут. Так понимаю, расширение - это типа xla-надстройки в экселе. Пока буду его макрос из стандартной библиотеки исполнять.
Записан
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 610


« Ответ #28: 20 Декабрь 2018, 11:38 »

Недавно была тема про расширения
тыц
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #29: 20 Декабрь 2018, 12:27 »

Пардон, немного отвлёкся от обсуждения, занят был - праздновал день рождения Санта-Клауса  Подмигивающий
Вас всех, кстати, тоже поздравляю  Всё хорошо

Вернёмся немного назад и пойдём по-порядку
А как мне тогда им передать?
В виде устных инструкций, вроде как здесь прочитал  Смеющийся И это, наверное, не самый плохой способ  "Если ты разведёшь человеку костёр - ему будет тепло целый вечер, если ты подожжёшь человека - ему будет жарко до конца жизни" (с) Т.Пратчетт

когда несколько файлов - всегда риск, что не туда положат, забудут настроить, еще что.
Ну, две-три неудачных попытки и в конце концов заработает как надо.
О двух файлах. С одним уже понятно - шаблон с жесткими связями, о другом - поговорим отдельно.
А что такое OXT и с чем его едят? Что туда кладут?
Это что-то вроде Экселевского Add-In. Только у Майкрософта это всё "надстройки", а в этом офисе три отдельных категории - Add-On надстройка, которая просто выполняет какие-то действия, Add-In расширение, которое добавляет новые функции в список стандартных функций Calc'а (например, SPLIT() какой-нибудь, или SORT(), или  FILTER(), которых среди встроенных функций нет, а иногда очень не хватает), и Plugin'ы.
Так вот, в меню Сервис есть специальный пункт, "Управление расширениями". Там ошибиться просто невозможно. Для вот этой темы я когда-то записал видео. Там в самом начале как раз использование этого пункта меню.

Создать расширение не сложно, "как два байта переслать". Alt+F11, Управление, вкладка Библиотеки, Создать... Вкладка Модули, перетаскиваешь модуль с макросом из Standard в новую библиотеку (можно с зажатым Ctrl, чтобы не перемещать, а создать копию). Опять вкладка Библиотеки, выделяешь библиотеку и кнопка Экспорт... Почему так сложно? А просто для библиотеки Standard эта кнопка не активна  Смеющийся
Всё, твой вопрос "как им передать макрос, чтобы они ничего не напутали" уже решён.
Такие вещи из головы не изобретешь, а где берут, не знаю. Если у Питоньяка - еще не всего прочитал. Перевод у меня от Дмитрия Чернова 2007-2008 и он, этот перевод, местами весьма корявый, а это не беллетристика, где можно пропустить описание природы...
А я-то не знал! Когда читал, пропускал целые главы... Точнее не так - если что-то было нужно, находил подходящее по описанию в оглавлении и читал только этот кусок. То есть, задачу прочитать всё от корки до корки никогда перед собой не ставил. Да и сам Питоньяк, кажется, где-то в предисловии пишет, что это не учебник, не методичка, а просто справочник всяких полезностей, собранных с самых разных форумов. Поэтому методическое чтение этой книги не требуется.

ThisComponent.getURL() мне нравится, в духе экселевого ThisWorkbook.Path
Скорее, ThisWorkbook.FullName

Попробуйте без --headless
Вы правы, без этого макрос запускается.
Ну, если честно, то он и с --headless запускался, просто MsgBox отобразить не мог.
...он спрашивает, включить ли макросы (хотя у меня стоит Сервис - Параметры - Безопасность - Безопасность макросов - Средний)
Там же, в "Безопасности макросов" есть ещё вкладка "Доверенные источники" - добавь в нижнее поле путь к какой-то папке и все макросы из файлов в этой папке будут запускаться без лишних вопросов.
Более того, запуск "нашего" макроса для сбора файлов после еще и вопрос "обновить ли связи" задает. И файл само не сохраняет. А надо, чтоб на автомате отработало. Хотя сохранение в макросе есть же. Что следует дописать?
В макросе ничего дописывать не нужно, поройся в настройках офиса. Например, в "Загрузка/сохранение" есть птичка "Относительные пути к файлам" (это к твоей находке, что линки в content.xml записаны как относительные), а в Calc-Формула есть какие-то "Пересчитывать при загрузке файла" - возможно, собака с вопросами об обновлении ссылок здесь зарыта? Не уверен, но ведь можно попробовать, да?

Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Страниц: « 1 2 3 4 »   Вверх
  Печать  
 
Перейти в:  

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