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.
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).
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;