%20com%20um%20%C3%BAnico%20atalho%20em%20uma%20c%C3%A9lula%20no%20LibreOffice%20Calc.png)
Eu sei que existe o atalho CTRL+ ;para inserir a data atual e CTRL+ SHIFT+ ;para inserir a hora atual.
No entanto, tenho dois problemas com isso:
1) Eu gostaria de ter um atalho para ambos
2) Gostaria de poder usar um formato personalizado de data e hora ( YYYY-MM-DD HH:MM:SS
)
O formato padrão do meu idioma é MM/DD/YY HH:MM:SS pm/am
- eu façonãoquero mudar isso. Quero usar um formato personalizado especificamente para esse atalho, de preferência sem soluções que envolvam xdotool
software de macro externo semelhante ou atalhos globais para todo o sistema.
As funções internas Tools -> Customize -> Keyboard
não parecem oferecer nenhuma ajuda.
(Por que não quero usar o xdotool; Uma solução diretamente no LibreOffice seria melhor.)
Encontrei o seguinte código de macro do OpenOfficeaqui, mas diz que só funciona com documentos do Writer. Como eu modificaria esta macro para inserir a DATA-HORA formatada na célula atualmente selecionada no 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
Responder1
Alterar o formato das células antes que o atalho seja a solução mais simples?
Formatar célula após atalho não funciona.
Maneira 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
Responder2
Para Excel (testado para MS Excel 2010 para Windows): inserindo-o em uma célula sem macro ou software adicional a única solução é usar 3 atalhos após o outro:
- CTRL+;
- space
- CTRL+ SHIFT+;
Pelo menos isso lhe daráDD-MM-YYYY HH:MM
A partir daí você só precisa alterar o formato definido pelo usuário de acordo com sua escolha:YYYY-MM-DD HH:MM:SS