%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9%20%D0%BA%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%86%D0%B8%D0%B8%20%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%20%D0%B2%20%D1%8F%D1%87%D0%B5%D0%B9%D0%BA%D1%83%20%D0%B2%20LibreOffice%20Calc.png)
Я знаю, что есть сочетание клавиш 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