Вставьте текущую дату и время (функция DATETIME) с помощью одного ярлыка в ячейку в LibreOffice Calc

727
confetti

Я знаю, что есть ярлык CTRL+ ;для вставки текущей даты и CTRL+ SHIFT+ ;для вставки текущего времени.

Однако у меня есть две проблемы с этим:

1) Я хотел бы иметь один шурцут для обоих

2) Я хотел бы иметь возможность использовать пользовательский формат даты и времени ( YYYY-MM-DD HH:MM:SS)

Формат моего языка по умолчанию MM/DD/YY HH:MM:SS pm/am- я не хочу это менять. Я хочу использовать пользовательский формат специально для этого ярлыка, желательно без решений с участием xdotoolили аналогичного внешнего макропрограммного обеспечения или глобальных общесистемных ярлыков.

Функции внутри Tools -> Customize -> Keyboard, кажется, не предлагают никакой помощи.

( Почему я не хочу использовать xdotool ; лучше было бы использовать решение непосредственно в LibreOffice.)


Я нашел следующий код макроса OpenOffice здесь, но он говорит, что он работает только с документами Writer. Как бы я изменил этот макрос, чтобы вставить отформатированный DATE-TIME в текущую выбранную ячейку в Calc?

'Author: Andrew Pitonyak 'email: andrew@pitonyak.org  'uses: FindCreateNumberFormatStyle Sub InsertDateField Dim oDoc Dim oText Dim oVCurs Dim oTCurs Dim oDateTime Dim s$  oDoc = ThisComponent If oDoc.SupportsService("com.sun.star.text.TextDocument") Then oText = oDoc.Text oVCurs = oDoc.CurrentController.getViewCursor() oTCurs = oText.createTextCursorByRange(oVCurs.getStart()) oText.insertString(oTCurs, "Today is ", FALSE) ' Create the DateTime type. s = "com.sun.star.text.TextField.DateTime" ODateTime = oDoc.createInstance(s) oDateTime.IsFixed = TRUE oDateTime.NumberFormat = FindCreateNumberFormatStyle(_ "DD. MMMM YYYY", oDoc)  oText.insertTextContent(oTCurs,oDateTime,FALSE) oText.insertString(oTCurs," ",FALSE) Else MsgBox "Sorry, this macro requires a TextDocument" End If End Sub 
1
Поскольку вы задаете этот вопрос, запрашивает LibreOffice, OpenOffice и Excel, могу ли я спросить, почему вы «только» запрашиваете LibreOffice в последнем предложении? Albin 5 лет назад 0
Я сам использую LibreOffice, но все три должны работать примерно одинаково. confetti 5 лет назад 0
ах, хорошо, я понимаю, тогда вы должны отредактировать свой вопрос, потому что таким образом он слишком широкий и последнее предложение - это ваш актуальный вопрос, но он не очень заметен (по крайней мере, насколько я понял, как " хороший "вопрос надо задавать) Albin 5 лет назад 0
Я отредактировал вопрос, вот что я имел в виду под пунктом 2). Я думаю, что это возможно, используя макрос в LO и назначая его ярлыку, но я ничего не знаю о макросах в работе LO. confetti 5 лет назад 0
это не так, как это работает в Excel? Albin 5 лет назад 0
Так должно быть. Вы знаете, как создать макрос для такого рода вещи в Excel? До сих пор каждое решение Excel, которое мне было нужно в прошлом, работало и на libreoffice. Он поддерживает макросы в BASIC, BeanShell, JavaScript и Python. confetti 5 лет назад 0
В Excel я использую редактор VBA напрямую (Alt + F11), но вы можете просто использовать макро-рекордер, записывать «любую вещь». Редактирование вновь созданного макроса должно открыть редактор макросов. Это работает в Excel, должно работать и в LibreOffice. Albin 5 лет назад 0
Это привело меня в правильном направлении. Я нашел макрос, который делает то, что я хочу, но работает только с документом писателя. Я отредактировал свой вопрос и добавил информацию. Знаете ли вы, как редактировать этот скрипт для работы в Calc / Excel? confetti 5 лет назад 0
@confetti, различные офисные пакеты, как правило, похожи. Они будут считывать и сохранять файлы друг друга в пределах разумного, и большинство общих функций имеют, по крайней мере, эквивалентный для разных платформ. Тем не менее, существует множество различий в том, как все работает на самом деле, и пользовательские интерфейсы разные. Это вызывает бесконечную путаницу среди пользователей, когда проблемы не могут быть воспроизведены или решения не работают так, как написано. Пожалуйста, отметьте с конкретным приложением, которое вы используете. Благодарю. fixer1234 5 лет назад 0
@confetti взгляните на ответ MShaffer, он / она написал макрос для вас ... какой хороший человек :) Albin 5 лет назад 0

2 ответа на вопрос

1
MShaffer

Изменить формат ячеек, прежде чем ярлык является самым простым решением?Format cell

Формат ячейки после ярлыка не работает.

Макро способ ...

Sub Main  Dim Doc As Object Dim Sheet As Object Dim Cell As Object Dim NumberFormats As Object Dim NumberFormatString As String Dim NumberFormatId As Long Dim LocalSettings As New com.sun.star.lang.Locale  Doc = ThisComponent Sheet = Doc.Sheets(0) Cell = Doc.getCurrentSelection Column = Cell.CellAddress.Column Row = Cell.CellAddress.Row  Cell.Value = Now()  LocalSettings.Language = "en" LocalSettings.Country = "us"  NumberFormats = Doc.NumberFormats NumberFormatString = "YYYY-MM-DD HH:MM:SS"  NumberFormatId = NumberFormats.queryKey(NumberFormatString, LocalSettings, True) If NumberFormatId = -1 Then NumberFormatId = NumberFormats.addNew(NumberFormatString, LocalSettings) End If  MsgBox NumberFormatId Cell.NumberFormat = NumberFormatId  End Sub 
используя Ctrl + Shift +; дает мне только дает мне дату "в полночь", когда я переформатировать? Вы делаете это с Libre Office или Excel? для ПК или Mac? какую версию вы используете? Albin 5 лет назад 0
Также для меня форматирование ячейки перед вставкой ярлыка времени не работает! Albin 5 лет назад 0
LibreOffice Версия: 5.1.6.2 / Ubuntu 16.04 ... я получаю тот же результат, если я применяю формат после использования ярлыка ... предварительное форматирование не укорачивало время по Ctrl +; или дата на crtl + shift +; MShaffer 5 лет назад 0
Я могу подтвердить поведение @Albin, описанное. Это не работает для меня. Я на LibreOffice 6. Кроме того, это дает мне "###", когда я переформатирую. confetti 5 лет назад 0
Извините, по-видимому, "###" появилось потому, что ячейка была недостаточно широкой. Ваш подход сработал для меня. Надеюсь получить ответ, который не требует от меня предварительного форматирования каждой ячейки. confetti 5 лет назад 0
Отлично. Спасибо огромное. Именно то, что мне было нужно. Я удалил `MsgBox` и установил для него ярлык, и он делает именно то, что мне нужно. confetti 5 лет назад 0
0
Albin

Для Excel (протестировано для MS Excel 2010 для Windows): вставка в одну ячейку без макроса или дополнительного программного обеспечения - единственное решение - использовать 3 ярлыка за другим:

  • CTRL + ;
  • space
  • CTRL+ SHIFT+;

По крайней мере, это даст вам DD-MM-YYYY HH:MM

Оттуда вам просто нужно изменить пользовательский формат на ваш выбор: YYYY-MM-DD HH:MM:SS

Это будет использовать формат даты и времени по умолчанию, в моем случае это даст мне `08/02/18 08:29:44 PM`. Мне нужен собственный формат, без изменения глобального значения по умолчанию. confetti 5 лет назад 0
@confetti Ах, хорошо, вы должны добавить эту информацию к вашему вопросу. Albin 5 лет назад 0
Я думал, что я достаточно ясно с тем, что я уже сказал, но я отредактирую это, чтобы быть более ясным. confetti 5 лет назад 0
Вы можете запрограммировать комбинацию клавиш для ввода всех сочетаний клавиш одним сочетанием клавиш. fixer1234 5 лет назад 0

Похожие вопросы