%20con%20un%20%C3%BAnico%20acceso%20directo%20en%20una%20celda%20en%20LibreOffice%20Calc.png)
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 xdotool
software de macro externo similar o accesos directos globales para todo el sistema.
Las funciones internas Tools -> Customize -> Keyboard
no 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 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