Como Salvar Dados do Calc no Base através de Macro?

Tenho uma planilha(calc) com uma macro que salva os dados digitados numa outra planilha. Porem quero salvar estes dados num banco de dados (base). Não encontrei nada a respeito na internet de como fazer esta macro e conexão com o base. Como fazer esta conexao com o base e como fazer esta macro para poder inserir os dados no base.

Use uma macro que execute uma instrução SQL INSERT INTO no Banco de Dados.

Veja o exemplo abaixo. Você pode adaptar para pegar os valores das células do Calc e inserir no BD.

Sub SalvarDadosBD()
Dim oDBC As Object
Dim oBD As Object
Dim oConexao As Object
Dim oDeclaracao As Object
Dim sBancoDados As String
Dim sSQL As String
 
   sBancoDados = "Empresa" '<< Nome do banco de dados registrado'     
   oDBC = createUnoService( "com.sun.star.sdb.DatabaseContext" )    
   oBD = oDBC.getByName( sBancoDados )
   oConexao = oBD.getConnection( "","" )
   oDeclaracao = oConexao.createStatement()
   
   sNome_Tabela = " ""Empregados"" " '<< Nome da tabela'
   sCampos =" ""Nome"",""Cod-Departamento"",""Salário"", ""Data Admissão"" " '<< Nome dos Campos'
   sValores =" 'Fulano de Tal', 1, 1000.10,'2017-02-01'  " '<< Valores para os campos'

   sSQL = "INSERT INTO " & sNome_Tabela & "(" & sCampos & ") VALUES (" & sValores & ")"      
   oDeclaracao.executeUpdate( sSQL )
   
   oDeclaracao.close()
   oConexao.close()
   oDeclaracao = Nothing
   oConexao = Nothing
   
   MsgBox "Concluído!",0,"Salvar Dados"
 End Sub

Atte,

Funcionou perfeitamente! Muito obrigado. Para fazer o Select é a mesma ideia, né?

Só que agora, vou tentar adaptar para receber os dados digitados no calc.

sValores =" oDados.getCellByPosition( 1,1).String, oDados.getCellByPosition( 1,2).String, oDados.getCellByPosition( 1,3).String "

COMO FAZER ESSA ADAPTAÇÃO??? ESSA AI NAO ESTA CERTA, MAS A LOGICA SERIA MAIS OU MENOS ISSO.

.

   oDoc = ThisComponent
   oCadas = oDoc.Sheets.getByName( "teste" )
  
   VALOR1 = oCadas.getCellRangeByName( "A1").String
   VALOR2 = oCadas.getCellRangeByName( "B1").String
   VALOR3 = oCadas.getCellRangeByName( "C1").String

   sNome_Tabela = " ""cliente"" " '<< Nome da tabela'
   sCampos =" ""nome"",""end"", ""fone"" " '<< Nome dos Campos'
   sValores = "('" & VALOR1 &"'),('" & VALOR2 &"'),('" & VALOR3 &"')"   

CONSEGUI!!! MUITO OBRIGADO!!!

Primeiramente Parabéns!

Para um instrução SELECT vc precisaria do método executeQuery() invés de executeUpdate(). Além disso, é preciso “navegar” no Resultset retornado para pegar o(s) valores(s). Veja esse exemplo (inglês).

@MarcoSalles, comentou…

*"@Grafeno

Bom dia . Desculpe voltar neste tópico . E que já coloquei duas postagens semelhantes no forum e não tive reposta talves não soube explicar e não fui compreendido . Bem …

Uso este esquema para salvar os dados do Calc no Base … O Problema que eu estou tendo e que os Dados “Salvos” no Calc so sáo EFETIVADOS no Base se eu abri o Base e das um SALVAR no próprio BASE …

Ha alguma configuração para evitar evitar isso , para que seja de modo independente ???
obg"*

@Marco Salles, por favor não use “Adicionar resposta” para fazer perguntas ou comentários…

Boa tarde!
Todos

Se eu criar um banco dados no base, como eu poderia criar um formulário de pesquisa?

Ola @Jamilson, crie Pergunta nova, esta já foi Resolvida com uma Resposta aceita, ficará confuso, Perguntas diferentes em única postagem.

Grato.

ok obrigado