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

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

Я знаю, что есть сочетание клавиш 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. Как мне изменить этот макрос, чтобы вставить отформатированную ДАТУ-ВРЕМЯ в текущую выбранную ячейку в Calc?

'Author: Andrew Pitonyak
'email:   [email protected] 
'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

Изменить формат ячеек перед ярлыком — самое простое решение?Форматировать ячейку

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

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

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

решение2

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

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

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

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

Связанный контент