Imputar dados de Caixa de Dialogo em planilha Calc

Em uma planilha de cadastro, como montar a macro que pegue os dados digitados na Caixa de Dialogo e grave na planilha.

Alguém tem um exemplo básico desta macro?

O Dialogo é do próprio arquivo .

Boa tarde,

Gilberto, segue exemplo de macro:

Sub Inserir()

ThisComponent.Sheets.GetByName("Plan1").GetCellRangeByName("A1").String = frmCadastro.GetControl("textfield1").Text.

End Sub

Onde:

  1. ThisComponent.Sheets.GetByName(“Plan1”).GetCellRangeByName(“A1”).String = Célula que vai receber o texto da caixa de texto
  2. frmCadastro = nome do formulário onde contém a caixa de texto
  3. “textfield1” = nome do controle caixa de texto

Obs caso trabalhe com valores utilize o controle “campo numerico” ao invés de “textfield”.

Importante ressaltar que para a macro funcionar o formulário deve estar previamente carregado.

Veja se te ajuda Gilberto

Estou aprendendo ainda…mas consegui chegar no resultado.
Mais linhas que o Junio informou, mas cheguei :slight_smile:

caixa de dialogo.ods

Até.

Ola @Conras, obrigado pelo exemplo. Estou compartilhando a melhoria feita no seu exemplo. Desta maneira a quantidade de Campos do Dialogo para a Planilha não será problema.

Vide arquivo…

Olá @Gilberto Schiavinatto,

Fico contente em ter ajudado.

Veja também este:

ola boa noite veja se pode me ajudar eu vi a planilha com modelo DIALOG igual que eu preciso
mas eu nao consigo anexar as colunas com as caixa de txtfield em cada coluna eles só vai até a coluna C eu queria que fosse até F G etc…
segue meu codigos retirado de vocês .Obrigado pelo ajuda

REM  *****  BASIC  *****

Dim oDialog1 As Object

Sub Dialog1Show
DialogLibraries.LoadLibrary( "Standard" )
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
oDialog1.Execute()
End Sub

Sub readDialog1()
	Call DialogoParaPlanilha  "TextField1"
	Call DialogoParaPlanilha  "TextField2"
	Call DialogoParaPlanilha  "TextField3"
	Call DialogoParaPlanilha  "TextField4"
	Call DialogoParaPlanilha  "TextField5"
	Call DialogoParaPlanilha  "TextField6"
	Call DialogoParaPlanilha  "TextField7"
End Sub


''====================================================
Sub DialogoParaPlanilha (x As String )
''  ATENÇÃO ==========================================
'''''' Para esta SubMacro funcionar
'''''' o Campo do Dialogo e a Célula que vai receber
'''''' a informação tem que estar com o mesmo nome.
'' ====================================================
dim document   as object
dim dispatcher as object
''oT1 = oDialog1.GetControl("TextField1")
oT1 = oDialog1.GetControl(x)
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")   
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
''args1(0).Value = "$Planilha1.$A$1"
args1(0).Value = x
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = oT1.Text
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "StringName"
args3(0).Value = oT1.Text
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = oT1.Text
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "StringName"
args5(0).Value = oT1.Text
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "StringName"
args6(0).Value = oT1.Text
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "StringName"
args7(0).Value = oT1.Text
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args7())

End Sub

Ola, @williamSimao, segue uma planilha nova com 6 campos|attachment, a alteração é simples:

Acertar a macro readDialog1(), como fez OK

Acertar a Caixa de Dialog

O segredo como esta observado na macro DialogoParaPlanilha e nomear na planilha a célula (1) que ira receber a informação com o mesmo nome do TextField (2)

Aproveitei e tirei “gordura” da macro. Abraço…

Obrigado é isso que eu precisava , mais uma informação , para colocar esses dados na LINHA 2 como faço essa mudança?

Clique no numero 1 da linha e clique direito e inserir linha acima.

Ou recortar e colar, desta maneira ela carrega a nomeação da célula.

Obrigado deu certinho que precisava .!

O meu programa está dando o erro “Sub ou procedimento Fuction não definido”

Ola @victoria_storino, não use Adicionar resposta para comentários, Grato.

Me envie o arquivo para dar uma olhada. gilberto@schiavinatto.com