Insira a data e hora atuais (função DATETIME) com um único atalho em uma célula no LibreOffice Calc

1

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 shurtcut para ambos

2) Gostaria de poder usar um formato de data / hora personalizado ( YYYY-MM-DD HH:MM:SS )

Meu formato padrão de idioma é MM/DD/YY HH:MM:SS pm/am - não não deseja alterar isso. Desejo usar um formato personalizado especificamente para esse atalho, de preferência sem soluções envolvendo xdotool ou software de macro externo semelhante ou atalhos globais para todo o sistema.

As funções em Tools -> Customize -> Keyboard não parecem oferecer ajuda.

( Por que não quero usar xdotool ; Uma solução diretamente no LibreOffice seria melhor.

Encontrei o seguinte código de macro do OpenOffice aqui , mas ele diz que só funciona com documentos do Writer. Como eu modificaria essa macro para inserir o DATE-TIME formatado 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
    
por confetti 02.08.2018 / 18:04

2 respostas

1

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.

Forma 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
    
por 02.08.2018 / 19:55
0

Para o Excel (testado para o 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 + ;
  • espaço
  • CTRL + SHIFT + ;

Pelo menos, isso lhe dará DD-MM-YYYY HH:MM

De lá, basta alterar o formato definido pelo usuário de acordo com sua escolha: YYYY-MM-DD HH:MM:SS

    
por 02.08.2018 / 19:46