Дата изменения в ячейке

Автор Nick222, 19 января 2015, 17:27

0 Пользователи и 1 гость просматривают эту тему.

Nick222

Здравствуйте! :)

С Новым Годом! :)

Скажите, плз, как вставить в ячейку Calc постоянно обновляемую дату изменения (последнего сохранения) данного файла?

Спасибо :)
Xubuntu 21.04, LibreOffice 7.2.*

JohnSUN

Может, как-то так?
Function lastUpdate()
lastUpdate = CDateFromUnoDateTime(ThisComponent.getDocumentProperties().ModificationDate)
End Function
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Nick222

А проще никак?

Я толком не знаю, куда это вставлять? Макрос типа делать?
Xubuntu 21.04, LibreOffice 7.2.*

JohnSUN

Типа он уже сделан. Его - эти три строчки - нужно скопировать в любой модуль в любой библиотеке Standard (или в документе или в МоиМакросы)
1. Жмём Alt+F11 - открывается окно управления макросами (то же самое можно и через меню Сервис-Макросы-Управление макросами-Basic, но слишком много щелкать приходится)
2. Выбираешь Мои макросы-Standard-Module1 и жмешь Правка.
3. Копируешь текст функции из форума в окно редактирования макросов
4. В нужной ячейке листа пишешь формулу
=LASTUPDATE()

Вроде бы и всё...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Nick222

Если вставить эту функцию внутри уже сохранённого файла и его ещё раз сохранить - то работает, если открывать файл со вставленной функцией без предварительного открытия Calc, то вываливается ошибка "Ошибка времени выполнения BASIC. Свойство или метод не найдены: getDocumentProperties.".
Xubuntu 21.04, LibreOffice 7.2.*

JohnSUN

В "Мои макросы" записал?
Тогда измени код на
Function lastUpdate()
lastUpdate = "Нажми Ctrl+Shift+F9"
On Error Resume Next
lastUpdate = CDateFromUnoDateTime(ThisComponent.getDocumentProperties().ModificationDate)
End Function
Эти две дополнительные строчки позволят не видеть ошибку. Но нажимать Ctrl+Shift+F9 придётся.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Nick222

А нельзя записать в Макросы LibreOffice, чтобы они вставлялись автоматически во все новые документы такого же типа?
Или это более сложно?
Xubuntu 21.04, LibreOffice 7.2.*

Nick222

Странно, что такой встроенной функции нет - в Writer она же есть...?
Xubuntu 21.04, LibreOffice 7.2.*

Nick222

Перенёс в конкретный документ - но теперь при каждом его открытии ЛО требует разрешить макросы... :(
Xubuntu 21.04, LibreOffice 7.2.*

JohnSUN

Сложно. Но можно. Вот только вопрос - а зачем? В смысле, зачем выводить в ячейке именно дату последнего изменения документа? Можно ведь при открытии документа в определённую ячейку автоматически вписывать текущую дату (тоже макросом). Сохранил документ - будет записана именно эта дата, не сохранил - останется предыдущая... А вообще-то дата последнего изменения видна в Файл-Свойства.

Чтобы офис знал, что макросы именно из этого документа можно использовать безбоязненно, нужно в Сервис - Параметры - LibreOffice - Безопасность нажать кнопку Безопасн.макросов... и во второй вкладке добавить в Расположение доверенных файлов путь к папке, где будут лежать файлы с макросами, которые можно запускать без дополнительных вопросов
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Nick222

Сложно всё это...
Мне нужно при работе с файлами сразу при открытии (не залезая в свойства, что, честно говоря, я часто забываю делать в рабочей горячке) видеть дату и время последнего сохранения, чтобы случайно не начать работать не с последней версией файла.
Из-за того, что файлы лежат на нескольких разных компах в разных местах (включая дом, ноутбук и несколько разных компов на работе) и туда-сюда переносятся на флешке, приходится делать именно через внутренние свойства документа.
Xubuntu 21.04, LibreOffice 7.2.*

JohnSUN

Цитата: Nick222 от 19 января 2015, 20:37
не залезая в свойства, что, честно говоря, я часто забываю делать в рабочей горячке
Погоди, так это же совсем другое дело! А если заставить офис при открытии любой книги первым делом выбрасывать на экран это окно Свойства? Ну, открыл файл, только нацелился бегом его править, а - тут оп-па! - изменён 19.02.2013...
Если мысль годится, то опять-таки в Мои макросы запиши
Sub ShowFileProperties
createUnoService("com.sun.star.frame.DispatchHelper").executeDispatch(ThisComponent.CurrentController.Frame, ".uno:SetDocumentProperties", "", 0, array())
End Sub
Потом выбери из меню Сервис-Настройка-События, в выпадающем списке внизу установи LibreOffice, выдели событие Открытие файла, щелкни Макрос и укажи этот самый ShowFileProperties.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

kompilainenn

Я в таких случаях пользуюсь я.диском или, если знаю, что инта нет, ставлю в ИМЕНИ файла ДАТУ
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

Nick222

Я на другом (чужом) компе разве это будет работать?
Xubuntu 21.04, LibreOffice 7.2.*

Nick222

Вопрос: если в ячейке Calc есть полный путь к другому LO-файлу - как переделать (первую) функцию, чтобы получать дату изменения того (а не открытого в данный момент) файла ?

Нужно ли тот файл открывать - или можно получить его пользовательские свойства, не открывая его?

Спасибо :)
Xubuntu 21.04, LibreOffice 7.2.*