Página 1 de 1

[Resolvido] criar vínculo entre o excel e o libreoffice

Enviado: Dom Set 01, 2019 9:05 pm
por Mathmatic
Saudações amigos,

venho pedir uma grande ajuda de vocês, pois preciso criar um Vínculo externo com uma planilha do LibreOffice.

já fiz muitas tentativas, mas até o momento na obtive sucesso. Preciso vincular meu arquivo Excel com uma planilha LibreOffice que está em outro diretório, ou seja, preciso buscar para dentro do meu arquivo Excel dados que estão em uma planilha LibreOffice em outro diretório.

depois vou precisar atualizar meus dados (Links) no Excel diariamente, mas isso acredito que as macros de atualização de Links farão o serviço tranquilamente, o problema maior é conseguir criar o Vínculo externo com a planilha LibreOffice.

podem por favor me ajudar... muito obrigado desde já.

Re: criar Vínculos entre o Excel e o LibreOffice

Enviado: Sex Set 06, 2019 11:05 am
por Julio Mangilli
Olá amigo se tivesse um modelo para postar eu tento algo, mas entendo a dificuldade, e se mandasse abrir o arquivo jogar um timer rodar as macros e fechar a planilha também não funciona? Ou seria muito trabalho ?

Re: criar Vínculos entre o Excel e o LibreOffice

Enviado: Sex Set 06, 2019 11:09 am
por Julio Mangilli
Planillha de Busca
Workbooks.Open "Caminho"
Call MACRO


E na Planilha destino...

Dim xTime As String
Dim xWB As Workbook

Private Sub Workbook_Open()
'Updated by Extendoffice 2019/1/20
On Error Resume Next
xTime = Application.InputBox("Favor colocar o tempo de Atualização:", "Mangilli", "00:00:20", , , , , 2)
Set xWB = ActiveWorkbook
If xTime = "" Then Exit Sub
Reset

End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
If xTime = "" Then Exit Sub
Reset
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If xTime = "" Then Exit Sub
Reset
End Sub

Sub Reset()
Static xCloseTime
If xCloseTime <> 0 Then
ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , False
End If
xCloseTime = Now + TimeValue(xTime)
ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , True
End Sub


Uma Ideia.

Re: criar Vínculos entre o Excel e o LibreOffice

Enviado: Sex Set 06, 2019 4:19 pm
por Mathmatic
saudações Julio,

obrigado por se preocupar com o meu problema . vou tentar explicar melhor e mais resumido.

tenho que resgatar/recuperar diariamente, para dentro do meu arquivo Base.xls, os dados de um arquivo do libreoffice que está em outro diretório (para então atualizar diariamente no meu arquivo Base.xls os vínculos)

informações do arquivo de busca:
nome do arquivo: libre
extensão: .ods
diretório: "C:\Users\Cati\Documents\teste\"

a princípio, tentei criar Vínculos entre os dois arquivos, mas não funcionou. Foi então que recorri ao fórum para pedir ajuda.

durante minhas pesquisas, também encontrei num fórum francês de libreoffice uma macro VBA que diz criar a possibilidade de vínculos do Excel com os dados do libreoffice, mas não consegui entender a macro e nem colocá-la em prática. o local da macro mencionada é este: Link

vou anexar para você, apenas como exemplo, o meu arquivo Base.xls e o arquivo libre.ods de onde desejo buscar/resgatar os Dados .

Obs: quanto mais automatizado, melhor será para mim .

desde já, muito obrigado pela ajuda.

Re: criar Vínculos entre o Excel e o LibreOffice

Enviado: Sex Set 06, 2019 4:53 pm
por Julio Mangilli
Entendi amigo, a extensão realmente é complicada nossa, realmente essa é pros Jedi.
Mas Assim eu posso tentar ajudar um tiquinho quem sabe você molda ao seu favor, converta o arquivo e depois puxa normalmente, vai ter que sempre converter mas acredito que vá ajudar depois que convertido, já era.

Sub SaveODSToXLSX()

Dim StrFilename As String
Dim StrDocName As String
Dim StrPath As String
Dim oWorkbook As Workbook
Dim fDialog As FileDialog
Dim intPos As Integer
MsgBox "Por favor, selecione a pasta que contém os arquivos para conversão", , "C:\Users\User\Desktop\teste"
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
With fDialog
.Title = "Selecione a pasta e clique em OK"
.AllowMultiSelect = False
.InitialView = msoFileDialogViewList
If .Show <> -1 Then
MsgBox "Cancelado pelo usuário", , "Listar conteúdo da pasta"
Exit Sub
End If
StrPath = fDialog.SelectedItems.Item(1)
If Right(StrPath, 1) <> "\" Then StrPath = StrPath + "\"
End With
If Left(StrPath, 1) = Chr(34) Then
StrPath = Mid(StrPath, 2, Len(StrPath) - 2)
End If
StrFilename = Dir$(StrPath & "*.ods")
While Len(StrFilename)
Set oWorkbook = Workbooks.Open(StrPath & StrFilename)
StrDocName = ActiveWorkbook.FullName
intPos = InStrRev(StrDocName, ".")
StrFocName = Left(StrDocName, intPos - 1)
StrDocName = StrDocName & ".xlsx"
oWorkbook.SaveAs Filename:=StrDocName, FileFormat:=51
oWorkbook.Close savechanges:=wdDoNotSaveChanges
StrFilename = Dir$()
Wend
MsgBox "Conversão concluída", , "ODS Para XLSX"
Exit Sub
End Sub

Re: criar vínculo entre o excel e o libreoffice

Enviado: Sex Set 06, 2019 6:06 pm
por Mathmatic
quando eu seleciono a Pasta, na qual está os arquivos do libreoffice, então ocorre um Erro na seguinte linha do código vba:

Código: Selecionar todos

Set oWorkbook = Workbooks.Open(StrPath & StrFilename)

Re: criar vínculo entre o excel e o libreoffice

Enviado: Sex Set 06, 2019 8:52 pm
por Reinaldo
O Excel, nativamente e por motivos óbvios,não lê/abre arquivos .ods; motivo do erro apontado.
A conversão para .xls ou .xlsx deve ser efetuada via o aplicativo Free (Libreoffice / openoffice/broffice).
O link francês informado aponta uma rotina que deve acessar via vba/sql mas aparentemente utiliza bibliotecas do servidor Apache: (CreateObject("com.sun.star.ServiceManager"))
Nas comunidades MSOffice, as que conheço não ha nenhuma referencia e essa "ligação".
Para sentir a rivalidade entre as comunidades, no link postado mandaram o usuario ir procurar ajuda em outro lugar que não iriam responder sobre softer proprietario.
Assim creio que a melhor saida é ter o libreoffice instalado, efetuar a conversão da(s) planilha(s) para formato MSExcel e depois sim utilizar VBA/SQL

[Resolvido] criar vínculo entre o excel e o libreoffice

Enviado: Sex Set 06, 2019 9:07 pm
por Mathmatic
olá Reinaldo,

estou há dias buscando respostas em torno deste assunto do meu tópico, foram muitas pesquisas.

sua resposta é a "forte confirmação" de pré-conclusões que eu estava chegando.

muito obrigado, pois você colocou o "telhado na casa". :D

abraços a você e também ao Júlio (que tentou ajudar-me de alguma forma).