使用单个快捷方式将当前日期和时间(DATETIME函数)插入LibreOffice Calc中的单元格


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

由于您是在问这个问题,所以要求使用LibreOffice,OpenOffice和Excel,请问为什么您在最后一句话中“只”要求使用LibreOffice?
Albin '18年

我本人正在使用LibreOffice,但是这三个工具应该几乎完全一样地工作。
五彩纸屑

嗯,好吧,我明白了,那么您应该编辑您的问题,因为这种方式太笼统了,最后一句话是您的实际问题,但不是很突出(至少就我所理解的“好”的问题)
Albin

我编辑了问题,这就是我所说的意思2)。我认为应该可以在LO中使用宏,然后将其分配给快捷方式,但是我对LO工作中的宏一无所知。
五彩纸屑

这与在Excel中工作的方式不同吗?
阿尔宾(Albin)

Answers:


2

在快捷方式是最简单的解决方案之前更改单元格的格式?格式化单元格

快捷方式后格式化单元格不起作用。

宏方式...

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做的?对于PC或Mac?您使用什么版本?
阿尔宾(Albin)

对我来说,在插入时间快捷方式之前格式化单元格也不起作用!
阿尔宾(Albin)

LibreOffice版本:5.1.6.2/Ubuntu 16.04 ...如果在使用快捷方式后应用格式,我会得到相同的结果...预先格式化没有缩短ctrl +上的时间;或日期为crtl + shift +;
MShaffer

我可以确认上述行为@Albin。这对我不起作用。我在LibreOffice 6上。此外,重新格式化时,它会给我“ ###”。
五彩纸屑

抱歉,显然是因为单元格不够宽而出现了“ ###”。您的方法对我有用。希望得到一个不需要我事先格式化每个单元格的答案。
五彩纸屑

0

对于Excel(已针对Windows的MS Excel 2010进行了测试):将其插入一个没有宏或附加软件的单元格中,唯一的解决方案是使用3个快捷方式,依次使用另一个快捷方式:

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

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

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


这将使用默认的日期和时间格式,就我而言,这将给我08/02/18 08:29:44PM。我需要一种自定义格式,而无需更改全局默认值。
五彩纸屑

@confetti啊,好的,您应该将此信息添加到您的问题中。
阿尔宾(Albin)

我以为我已经说过足够清楚,但是我将对其进行编辑以使其更加清晰。
五彩纸屑

您可以对键盘快捷方式进行编程,以使用一个快捷方式输入所有按键。
fixer1234 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.