Erro de execução do BASIC. Procedimento Sub ou procedimento de Function não definido

Preciso fazer um formulário que coloque a data e a hora de entrada automaticamente.

Sub Main

  Dim oForm, oData, oEntrada, oSaida, oNome, oLotacao, oDocumento as Object
  
  
  Set oForm=Forms("MainForm")
  oData = Date
  oEntrada = Time
  datData.txt = oData
  timEntrada.txt = oEntrada
    

End Sub

Bom dia,

Parece que você tentou inserir a data e a hora atual em controles campo de data e campo de tempo. Acontece que no LibreOffice estes controles aceitam valores apenas em estruturas (estructures). Então o código ficaria da seguinte forma:

Sub Main
Dim oDoc, oForm, odatData, otimEntrada
Dim oData As New com.sun.star.util.Date 'Estrutura para a data'
Dim oEntrada As New com.sun.star.util.Time 'Estrutura para o tempo'
   
   oDoc = ThisComponent
   oForm = oDoc.Drawpage.Forms.getByName("MainForm")
      
   odatData = oForm.getByName("datData")
   With oData
     .Year = Year(Date)
     .Month = Month(Date)
     .Day = Day(Date)
   End With
   odatData.Date = oData

  otimEntrada = oForm.getByName("timEntrada")
   With oEntrada
     .Hours = Hour(Time)
     .Minutes = Minute(Time)
   End With
   otimEntrada.Time = oEntrada 

   odatData.Commit()
   otimEntrada.Commit()

End Sub

Atte,

Muito obrigado. Deu certo, os campos foram preenchidos automaticamente mas os valores não estão sendo gravados na tabela. Não sei porque

@rubenlopez47, é que me esqueci de duas linhas importantes:

odatData.Commit()
otimEntrada.Commit()

Agora acrescentei na resposta. Teste que vai dar certo.

Muito obrigado. Deu certo. Agora se puder me tirar outra duvida. Quero colocar um botão para registrar a saída. Quando a pessoa sair, eu pressiono o botão de “Registrar Saida”, e no campo saída da tabela fica gravado o horário que a pessoa saiu. Pode me dar uma dica? Obrigado.

Tentei dessa forma mas não deu certo

Sub Macro1

Dim oSaida as New com.sun.star.util.Time

With oSaida
  .Hours = Hour(Time)
  .Minutes = Minute(Time)
End With

oSaida.Commit()

End Sub

Tentei dessa forma também. Também não deu. Obrigado.

Sub RegistroSaida

Dim oDoc, oForm
Dim oSaida as New com.sun.star.util.Time

oDoc = ThisComponent
oForm = oDoc.Drawpage.Forms.getByName("MainForm")

oSaida = oForm.getbyname("TxtSaida")
With oSaida
  .Hours = Hour(Time)
  .Minutes = Minute(Time)
End With

oSaida.Commit()

End Sub

Recebo a seguinte mensagem: " O objeto não acessível. Utilização inválida de um objeto."
Obrigado

Agora fiz dessa forma. Pensei que ia dar certo mas não deu. Seguinte mensagem: “Erro de execução do BASIC.
Propriedade ou método não encontrado: Time.”

Sub RegistroSaida

Dim oDoc, oForm, oTxtSaida
Dim oSaida as New com.sun.star.util.Time

oDoc = ThisComponent
oForm = oDoc.Drawpage.Forms.getByName("MainForm")

oTxtSaida = oForm.getbyname("TxtSaida")
With oSaida
  .Hours = Hour(Time)
  .Minutes = Minute(Time)
End With
oTxtSaida.Time = oSaida

oTxtSaida.Commit()

End S

Consegui agora, obrigado.

Bom dia. Como faço pra condicionar a macro da data ser executada apenas quando o campo estiver vazio? Muito obrigado.