Skip to content

Usando o OpenOffice Calc com Visual Basic

26 julho 2006

 broffice.jpg

Sou um fã do OpenOffice, em particular da sua versão Brasileira, o BrOffice. Uso o BrOffice tanto em casa quanto no trabalho.

E como trabalho com Visual Basic resolvi procurar como se usava o OpenOffice no VB.

Por que usar o OpenOffice?

O OpenOffice é fácil de usar, vem em 100% na lingua portuguesa, tem um bom corretor ortográfico, é OpenSource, Multiplataforma, e lê e grava os mais diferentes tipos de arquivos, seu formato (OpenDocument) foi escolhido como o padrão ISO. Como não sou um harduser desse tipo de software – uso apenas para fazer trabalhos, apresentações e planilhas com gráficos – o OpenOffice não me deixa a desejar.

Por que usar o OpenOffice com Visual Basic?

Para não obrigar o cliente a ter o MS Office. Já que não é todo mundo que está disposto a desenbolsar em torno de R$ 500,00. E também por não ter muita diferença usar o OpenOffice ou o Excel.

Usando o OpenOffice no VB:

Em um novo projeto, cole o seguinte código no evento Form_load:

Dim aNoArgs()
Set oServiceManager = CreateObject(“com.sun.star.ServiceManager”) ‘cria o objet service manager
Set oDesktop = oServiceManager.createInstance(“com.sun.star.frame.Desktop”) ‘cria o objeto desktop
Set oDoc = oDesktop.loadComponentFromURL(“file:///” & Replace(App.Path, “\”, “/”) & “/teste.ods”, “_blank”, 0, aNoArgs()) ‘abre o documento

Set oSheet = oDoc.getSheets().getByIndex(0) ‘seleciona primeira planilha

Call oSheet.getCellByPosition(3, 1).SetValue(111) ‘seta valor col,linha
Call oSheet.getCellByPosition(3, 2).SetValue(222) ‘seta valor col,linha
Call oSheet.getCellByPosition(3, 3).SetString(“Nilson”) ‘seta valor da celular do tipo string
Call oSheet.getCellByPosition(3, 5).SetFormula(“=SUM(D2:D4)”) ‘seta celula do tipo formula

End ‘sai do programa

Para o código funcionar é necessário ter um arquivo em branco de nome teste.ods na mesma pasta do programa.

Execute e veja o resultado, o programa abre o documento teste.ods, insere 2 células de conteúdo numérico, uma de conteúdo texto e uma quarta com conteúdo fórmula, simples assim.

Para mais implementações do código, visite o site oficial da API do openoffice.

Baixe o projeto completo aqui.

Programas usados:

  • Visual Basic 6.0 Sp6
  • BrOffice 2.0

Fonte:

www.google.com

www.openoffice.org

www.oooforum.org

From → Visual Basic

25 Comentários
  1. Basilio permalink

    Set oDoc = oDesktop.loadComponentFromURL(“file:///” & Replace(App.Path, “\”, “/”) & “/teste.ods”, “_blank”, 0, aNoArgs())

    Tentei rodar o código e deu o erro abaixo.
    Pode dizer-me o motivo ?

    ?err.Number
    424
    ?err.Description
    Object required

    Não instanciou o objecto “oDesktop”

  2. Radiske permalink

    Gostei do seu artigo e funcionou 100% comigo.
    Parabéns!

    Seguinte, também sou fã do VB, estou na mesma versão que você, mas também sou fã do Linux, uso slackware e, apesar de programar em Windows com VB, gostaria muito de usar o Base do BrOffice.
    Tem como criar um arquivo “dados.odb” e liga-lo ao VB como fonte de dados como se fosse um do access?

    Obrigado pela atenção.

  3. darkstrikerd permalink

    Basilio,

    Como te falei por e-mail, anexei o fonte do exemplo no artigo.

    Radiske,

    Não tenho conhecimento de usar broffice com vb, se achar alguma coisa, manda pra mim ok?
    Entrei em contato por e-mail pra gente trocar uma idéia sobre o vb e o linux.

    Abraços

    Que bom que gostaram do artigo.

  4. Genilson de Morais Cruz permalink

    Bom dia. Esse exemplo funcionou porém gostaria de gerar a planilha com a janela do BrOffice escondida. Você sabe como fazer isso ?

  5. fkjasdfh permalink

    naum sei usar o openoffice e queria umas dicas…

  6. Wbenay permalink

    Òtimo artigo, funcionou perfeitamente! Mas ainda não consegui mesclar, colocar borda e negrito.

    Imagino que seria algo parecido como:

    Call oSheet.getCellByPosition(3, 3).Merge

  7. Wbenay,

    Eu faço o seguinte, crio o arquivo previamente, e depois só jogo os dados nele usando o VB. Dessa forma a formatação fica no próprio documento e não na programação. Para usar negrito você define o negrito na célula e quando jogar os dados nela eles já sairão em negrito. Isso serve para fórmulas também.

  8. Juan Vital permalink

    good script!!! Congratulations! helped me!

  9. you are welcome Juan.

  10. Valmir permalink

    Muito bom.

    Eu eliminei a dependência de ter o arquivo “teste.ods” fazendo o seguinte:

    Set oDoc = oDesktop.loadComponentFromURL(”private:factory/scalc”, “_blank”, 0, aNoArgs()) ‘cria um novo documento

    Espero ter contribuído.

  11. Valeu Valmir, fica a dica ai pro pessoal.🙂

  12. naum consegui infelizmente [:(] procurar o q quero gostaria de saber sobre
    ~>definições
    ~>caracteristicas
    ~>utilizações de graficos
    ~>formulas e funções

    to deixando a dica ai pra galera!!!![:)]

  13. Ingrid,

    o que não conseguiste?
    defs, caracteristicas e formulas tem exemplos disso tudo no forum do ooo.

    Gráficos realmente não achei nada, mas formulas dá pra fazer sim.

    dá uma olhadinha em http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html

  14. Valmir permalink

    Olá a todos.

    Estou com problema na hora de exportar data.

    O openoffice enxerga o que eu exportei como texto e nem se eu (na planilha) mudar o tipo de dados para data resolvo o problema.

    Pra usar a data, tem que editar os campos um a um.

    Alguém pode me ajudar?

    Grato.

  15. Paulo permalink

    Ao tentar rodar no VB6 sem ter o OpenOffice Instalado me é apresentada a seguinte mensagem:
    Run-time error ‘429’:
    ActiveX component can’t create object
    E ao criar o executável e executa-lo com o OpenOffice Instalado é apresentada a mesma mensagem.
    Para compilar é nescessário estar instalado o OpenOffice ?
    Funciona com a versão 3 do BrOffice?
    Atenciosamente
    Paulo

  16. Nilson permalink

    @Paulo,
    precisa sim ter o openoffice instalado.
    nunca testei com a versão 3.

  17. Luiz permalink

    Quando realizo a exportacao de uma matriz 50 x 50 para o broffice calc, o processo fica muito lento. Alguem sabe o motivo?

  18. Kleber Mota permalink

    Pessoal, por gentileza alguem poderia me ajudar em alguns destes itens:

    1- Como faço para exportar um registro em negrito?.
    2- Como faço para alinhar as celular com um tamanho padrão.?
    3- Como faço para após finalizar a exportação o documento fechar automático.

    Obrigado.!

  19. Sergio permalink

    Boas pessoal!
    Sou novo nestas andanças do VB e tou com uma pequena divuda..
    gostei muito do artigo e vem de encontro ao que ando a procura. Eu ja o fiz em excel mas queria passar pro openoffice pois nao tenho licensa.
    tenho uma aplicação que diariamente gera um ficheiro e durante o dia vai acedendo pra guardar valores que mais tarde serao analizados.
    a minha duvia é: como posso eu escolher um destinho do ficheiro? (exemplo “c:\Programas\Supervisao da Rede\Dia 1-1-2011.odb”)

  20. Deiff Ferrari permalink

    Será que voc~e pode me ajudar em uma questão ? Preciso comparar duas listas de números de processos, por exemplo, colocar 500 processos na coluna A e 500 na coluna B, e obter os números dos processos que se repetem? Exemplo:
    Coluna A Coluna B Coluna C
    1 – 0002259-14.2014.827.2729 5010529-79.2012.827.2706
    2 – 0000490-40.2014.827.2706 5003124-41.2012.827.2722
    3 – 0006291-34.2014.827.2706 0002259-14.2014.827.2729 0002259-14.2014.827.2729

    Nesse Exemplo A1 se repete com B3 e mê da o numero repetido em C3. Não estou conseguindo elaborar isso, se você souber ou tiver algo em mente poderia me ajudar?

    Obrigado!

  21. Ofião! permalink

    Olá.. Nilson…
    O broffice/LibreOffice não dá acesso aos dados das tabelas criadas no base por VB6?
    tem algum driver para essa conexão… vlw

    • Não sei te dizer se essa conexão é possível, pelo menos pelo ADO acho que não dá, pois o base não é um banco de dados.

  22. como faço para dar “invisible’ nela quando esta gerando.. pq ela abre a planilha e vai gerando , assim demora mais… eh melhor gerar com ela ‘por baxo dos panos’ e depois mandar abrir o arquivo… com o excel eu faço assim.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: