Bom dia,

Agradeço a grande ajuda do post do Charles Jenkins, sem ele não teria conseguido usar o LibreOffice com o SAP B1.

Este documento explica passo a passo para inserir o código em Visual Basic explicado no post AutoOpen.xls and LibreOffice or OpenOffice criado pelo autor acima.

É necessário fazer as alterações utilizando Excel (utilizei o Excel 2013 para explicar a alteração do arquivo).

 

1) Ativando aba Desenvolvedor.

 

– Abra o Excel.

– Clique em Arquivo.

– Clique em Opções.

– Clique em Personalizar Faixa de Opções.

Em Personalizar Faixa de Opções e em Guias Principais, marque a caixa de seleção Developer.

http://office.microsoft.com/pt-br/excel-help/mostrar-a-guia-desenvolvedor-HA101819080.aspx

 

 

Será ativada uma aba chamada Desenvolvedor.

2) Alterando o AutoOpen.XLS

– Abra o arquivo AutoOpen.XLS no Excel

– Pressione a aba Desenvolvedor, Exibir Código

– Clique duas vezes no Module2, será apresentado o código em Visual Basic que faz a abertura do arquivo texto exportado pelo SAP.

 

Rotina Original.

– Substitua o código fonte inteiro pelo código abaixo, podemos ver que foi criada uma nova sub-rotina para abertura do LibreOffice


Public Sub OpenExlFile(ExcelPath As String)
Attempt1:
    On Error GoTo Fail1
   
    ' Assume we're running Microsoft Excel
    
    ' Inicio: Rotina original
    Workbooks.OpenText FileName:=ExcelPath, _
        Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Local:=True
    Workbooks.Application.Columns.AutoFit
    ' Fim: Rotina Original
    
    Exit Sub
   
Fail1:
    Resume Attempt2
Attempt2:
    On Error GoTo Fail2
   
    ' Perhaps we're running LibreOffice or OpenOffice
   
    StarOpenTsvFile (ExcelPath)
Fail2:
    Exit Sub
    
End Sub
Public Sub StarOpenTsvFile(tsvPath As String)
    Dim starDesktop As Object
    Dim url As String
    Dim doc As Object
    Dim parms(1) As New com.sun.star.beans.PropertyValue
    parms(0).Name = "FilterName"
    parms(0).Value = "Text - txt - csv (StarCalc)" ' Name is incorrect, but required
    parms(1).Name = "FilterOptions"
    parms(1).Value = "9,,65535,1" ' Tab seps, no string delim, UTF-16 charset, begin at line 1
    starDesktop = createUnoService("com.sun.star.frame.Desktop")
    url = ConvertToUrl(tsvPath)
    doc = starDesktop.loadComponentFromURL(url, "_blank", 0, parms)
End Sub

Qualquer dúvida abra os arquivos anexados a este documento, salvei a imagem do antes e depois, além de um arquivo texto com a subrotina criada pelo Charles.

Estou usando atualmente o LibreOffice 4.3

Espero ter ajudado,

Um grande abraço,

Fabio.

To report this post you need to login first.

3 Comments

You must be Logged on to comment or reply to a post.

      1. Fabio Bilicki Post author

        Bom dia,

        estou usando o LibreOffice 5.1.2.2 e funciona,

        Um detalhe interessante, se você já tiver uma planilha aberta, com uma aba com o mesmo nome do arquivo que o SAP vai exportar, ele apresenta erro até no Excel 2016 (365) no VB. Isso aconteceu comigo uma vez, mas pra resolver é só trocar o nome na hora de exportar.

        Abraço,

        Fabio

        SAP 9.0 PL15

        (0) 

Leave a Reply