使用单个快捷方式将当前日期和时间(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 文档。我该如何修改此宏以将格式化的 DATE-TIME 插入到 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(针对 Windows 版 MS Excel 2010 测试):将其插入到一个单元格中,无需宏或其他软件,唯一的解决方案是连续使用 3 个快捷方式:

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

至少这会给你DD-MM-YYYY HH:MM

从那里你只需要将用户定义的格式更改为你的选择:YYYY-MM-DD HH:MM:SS

相关内容