1

Я знаю, что есть 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

2 ответа2

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
0

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

  • CTRL + ;
  • пространство
  • CTRL + SHIFT + ;

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .