Inserte la fecha y hora actuales (función DATETIME) con un único acceso directo en una celda en LibreOffice Calc

Inserte la fecha y hora actuales (función DATETIME) con un único acceso directo en una celda en LibreOffice Calc

Sé que existe el acceso directo CTRL+ ;para insertar la fecha actual y CTRL+ SHIFT+ ;para insertar la hora actual.

Sin embargo, tengo dos problemas con eso:

1) Me gustaría tener un acceso directo para ambos

2) Me gustaría poder utilizar un formato de fecha y hora personalizado ( YYYY-MM-DD HH:MM:SS)

El formato predeterminado de mi idioma es MM/DD/YY HH:MM:SS pm/am: SínoQuiero cambiar esto. Quiero usar un formato personalizado específicamente para ese acceso directo, preferiblemente sin soluciones que involucren xdotoolsoftware de macro externo similar o accesos directos globales para todo el sistema.

Las funciones internas Tools -> Customize -> Keyboardno parecen ofrecer ninguna ayuda.

(Por qué no quiero usar xdotool; Lo mejor sería una solución directamente dentro de LibreOffice).


Encontré el siguiente código de macro de OpenOfficeaquí, pero dice que sólo funciona con documentos de Writer. ¿Cómo modificaría esta macro para insertar la FECHA-HORA formateada en la celda actualmente seleccionada en 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

Respuesta1

¿Cambiar el formato de las celdas antes de que el acceso directo sea la solución más sencilla?Formatear celda

Formatear celda después del acceso directo no funciona.

Manera macro...

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

Respuesta2

Para Excel (probado para MS Excel 2010 para Windows): al insertarlo en una celda sin macro ni software adicional, la única solución es utilizar 3 atajos tras otro:

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

Al menos esto te daráDD-MM-YYYY HH:MM

Desde allí sólo tienes que cambiar el formato definido por el usuario a tu elección:YYYY-MM-DD HH:MM:SS

información relacionada