Veremos neste artigo como trabalhar com os aplicativos do Office (Word, Excel e PowerPoint) através dos componentes da paleta Servers do Delphi. Com esses componentes podemos utilizar os vários assistentes e ferramentas do Office, criando automaticamente textos no Word, gráficos no Excel e apresentações no PowerPoint, gerados a partir de informações de um banco de dados, por exemplo.

Os componentes da paleta Servers (Figura 1) permitem que você integre sua aplicação aos aplicativos do Office, usando OLE Automation. Eles são na verdade wrappers que encapsulam uma biblioteca de tipos (Type Library) em um componente, permitindo a manipulação do aplicativo externo através da chamada de métodos, de uma maneira rápida e fácil.

Componentes da paleta Servers permitem integração com os aplicativos do Office
Figura 1. Componentes da paleta Servers permitem integração com os aplicativos do Office

Integração com o Word

Em um primeiro exemplo, adicionaremos em um documento do Word um texto e salvaremos o documento no formato HTML, tudo realizado através do Delphi.

Em uma nova aplicação no Delphi, adicione no formulário os seguintes componentes: WordApplication, WordDocument (Servers), três Buttons (Standard), SaveDialog e OpenDialog (Dialogs). Disponibilize os componentes no formulário conforme a Figura 2. Adicione no evento OnClick dos botões o código da Listagem 1 (de acordo com o botão).

Integração com o Word
Figura 2. Integração com o Word

Novo:
with WordApplication1, WordDocument1 do
begin
  { Adiciona um novo documento }
  Documents.Add(EmptyParam, EmptyParam,
    EmptyParam, EmptyParam);
  { Mostra a janela maximizada }
  WindowState := wdWindowStateMaximize;
  { Conecta o WordDocument ao documentno ativo da
    aplicação atual }
  ConnectTo(ActiveDocument);
  { Adiciona o texto }
  Range.InsertAfter(
     'Escrevendo no Word - ClubeDelphi');
  Visible := True;
end;
Abrir:
var
  aArquivo: OleVariant;
begin
  if OpenDialog1.Execute then
  begin
    aArquivo := OpenDialog1.FileName;
    WordApplication1.Documents.Open(aArquivo,
      EmptyParam, EmptyParam, EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam, EmptyParam,
      EmptyParam,EmptyParam);
    WordApplication1.WindowState :=
      wdWindowStateMaximize;
    WordApplication1.Visible := True;
  end;
end;
Salvar:
var
 aArquivo, aFormato: OleVariant;
begin
  if SaveDialog1.Execute then
  begin
    aArquivo := SaveDialog1.FileName;
    aFormato := wdFormatHTML; { Salva em HTML }

    WordApplication1.ActiveDocument.SaveAs(aArquivo,
      aFormato, EmptyParam, EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam);
  end;
end;
...

Quer ler esse conteúdo completo? Tenha acesso completo