Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 14 de Janeiro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
64 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Obtendo Informações de Documentos do Word através do WordApplication
Publicado por ActiveDelphi : Quinta, Março 02, 2006 - 11:22 GMT-3 (16561 leituras)
Comentários 1 Comentário   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Gustavo Frassini Olá amigos, agora vou passar um código de como obter informações de um arquivo do Word, através do componente WordApplication da paleta Servers do Delphi. Todos os comandos abaixo foram testados em Delphi 6 e 7.

Inicie uma nova aplicação e coloque 1 Edit, 1 OpenDialog, 1 SpeedButton, 2 ListBox’s no form, 6 Botões e um componente WordApplication.


 

Inicialmente declare uma variável global chamada: DocWord do tipo _Document;
 
Antes de partir para a programação dos botões vamos fazer uma função que retorna se o arquivo já foi carregado corretamente:
 
function TForm1.VerificaArquivo:boolean;
begin
  result := true;
  try
    DocWord.Activate;
  except
    Showmessage('Arquivo ainda não carregado.');
    Edit1.SetFocus;
    result := false;
  end;
end;

 
Nesta função estamos verificando se existe algum documento ativo no objeto DocWord, para evitar erros do tipo “cliquei no botão estatísticas sem carregar um documento”.
 
Agora no evento onClose do form coloque o código:


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var NaoSalvar, ParametroVazio: OleVariant;
begin
  NaoSalvar := wdDoNotSaveChanges;
  DocWord.Close(NaoSalvar,ParametroVazio,ParametroVazio);
  WordApplication1.Quit;
end;


Neste procedimento fechamos o arquivo aberto no objeto DocWord sem salvar qualquer alteração que por ventura venha a ocorrer.
 

Vamos agora ao speedbutton procurar:


procedure TForm1.spbProcurarClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    if OpenDialog1.FileName <> '' then
      edit1.Text := OpenDialog1.FileName;
end;
 
Evento simples que serve apenas para localizar um documento do word.
 
Botão Carregar:
Aqui encontramos diferença de parâmetros do delphi 6 para o 7, portanto se você for utilizar em delphi 7 utilize o código em vermelho, se você for utilizar no delphi 6 utilize o código em azul.
 
Código botão carregar para Delphi 6
 

procedure TForm1.btnCarregarClick(Sender: TObject);
var
  Arquivo, Convesoes, SomenteLeitura, AdicionarAosArquivosRecentes,
  SenhadoDocumento, SenhaModelo, Reverter, SenhadeEscritadoDocumento,

  SenhadeEscritadoModelo, Formato, Encoding, Visivel: OleVariant;
begin
  if Edit1.Text = '' then

  begin
    Showmessage('Nenhum arquivo selecionado.');
    Edit1.SetFocus;
    Exit;
  end;
  Arquivo := Edit1.Text;
  Convesoes := False;
  SomenteLeitura := False;
  AdicionarAosArquivosRecentes := False;
  SenhadoDocumento := '';
  SenhaModelo := '';
  Reverter := True;
  SenhadeEscritadoDocumento := '';
  SenhadeEscritadoModelo := '';
  Formato := wdOpenFormatDocument;
  encoding:= '';
  Visivel := true;
  Try
    DocWord:=WordApplication1.Documents.Open(Arquivo, Convesoes, Convesoes,   AdicionarAosArquivosRecentes, SenhadoDocumento, SenhaModelo, Reverter, SenhadeEscritadoDocumento, SenhadeEscritadoModelo, Formato, encoding, Visivel);
    if DocWord.Name <> '' then
      Showmessage('Arquivo: '+DocWord.Name+' carregado.');
  except
    Showmessage('Erro ao abrir arquivo.');
  end;
end;
 


Código botão carregar para Delphi 7


procedure TForm1.btnCarregarClick(Sender: TObject);
var
  Arquivo, Convesoes, SomenteLeitura, AdicionarAosArquivosRecentes,
  SenhadoDocumento, SenhaModelo, Reverter, SenhadeEscritadoDocumento,
  SenhadeEscritadoModelo, Formato, Encoding, Visivel, AbrirReparar, NoEncoding,  

  DocDirection : OleVariant;
begin
  if Edit1.Text = '' then

  begin
    Showmessage('Nenhum arquivo selecionado.');
    Edit1.SetFocus;
    Exit;
  end;
  Arquivo := Edit1.Text;
  Convesoes := False;
  SomenteLeitura := False;
  AdicionarAosArquivosRecentes := False;
  SenhadoDocumento := '';
  SenhaModelo := '';
  Reverter := True;
  SenhadeEscritadoDocumento := '';
  SenhadeEscritadoModelo := '';
  Formato := wdOpenFormatDocument;
  encoding:= '';
  Visivel := true;
  Try
    DocWord:=WordApplication1.Documents.Open(Arquivo, Convesoes, Convesoes,    AdicionarAosArquivosRecentes, SenhadoDocumento, SenhaModelo, Reverter, SenhadeEscritadoDocumento, SenhadeEscritadoModelo, Formato, encoding, Visivel, AbrirReparar, DocDirection, NoEncoding);
    if DocWord.Name <> '' then
      Showmessage('Arquivo: '+DocWord.Name+' carregado.');
  except
    Showmessage('Erro ao abrir arquivo.');
  end;
end;

 

Procedure que carrega o arquivo no objeto DocWord, se este arquivo for um documento do word válido. Como você pode notar mudaram a quantidade de parâmetros da versão 6 do delphi para a versão 7.
 
Botão Ver no Browser


procedure TForm1.btnBrowserClick(Sender: TObject);
begin
  if VerificaArquivo then
    DocWord.WebPagePreview;
end;

 
Simples evento fornecido pelo objeto criado, que é a opção de abrir o documento no navegador padrão de internet.
 
 
Botão Estatísticas:

 
procedure TForm1.btnEstatisticasClick(Sender: TObject);
  var ParametroVazio: OleVariant;
begin
  if not VerificaArquivo then exit;
  ListBox1.Clear;
  ListBox1.Items.Add('Propriedades de: '+DocWord.Name);
  ListBox1.Items.Add('Este arquivo contem: ');    

  ListBox1.Items.Add(IntTostr(DocWord.ComputeStatistics  

      (wdStatisticCharacters,ParametroVazio))+' Caracteres sem Espaço, ');
  ListBox1.Items.Add(IntTostr(DocWord.ComputeStatistics  

      (wdStatisticCharactersWithSpaces,ParametroVazio))+' Caracteres com Espaco,');
  ListBox1.Items.Add(IntTostr(DocWord.ComputeStatistics

      (wdStatisticLines,ParametroVazio))+' Linhas,');
  ListBox1.Items.Add(IntTostr(DocWord.ComputeStatistics

      (wdStatisticPages,ParametroVazio))+' Páginas,');
  ListBox1.Items.Add(IntTostr(DocWord.ComputeStatistics

      (wdStatisticParagraphs,ParametroVazio))+' Parágrafos,');
  ListBox1.Items.Add(IntTostr(DocWord.ComputeStatistics

      (wdStatisticWords,ParametroVazio))+' Palavras.');
end;

 
Neste procedimento podemos notar as estatísticas do documento, como a opção Ferramentas - Contar Palavras do Microsoft Word.
Temos as seguintes opções:
 

wdStatisticCharacters

Total de Caracteres sem espaço;

wdStatisticCharactersWithSpaces

Total de Caracteres sem espaço;

wdStatisticLines

Total de linhas do arquivo;

wdStatisticPages

Total de Páginas do arquivo;

wdStatisticParagraphs

Total de parágrafos no arquivo;

wdStatisticWords

Total de palavras contidas no arquivo.

 

Botão Propriedades:


procedure TForm1.btnPropriedadesClick(Sender: TObject);
var
  documento: OleVariant;
  indice:Integer;
begin
  if not VerificaArquivo then exit;
  documento := DocWord;
  ListBox2.Clear;
  ListBox2.Items.Add('Propriedades de: '+DocWord.Name);
  ListBox2.Items.Add('Local: '+DocWord.Path);
  for indice := 1 to documento.BuiltInDocumentProperties.Count do

  begin
    if AnsiUpperCase(documento.BuiltInDocumentProperties[indice].Name) = 'TITLE' then
      listbox2.Items.Add('Titulo: '+documento.BuiltInDocumentProperties[indice].Value);
    if AnsiUpperCase(documento.BuiltInDocumentProperties[indice].Name) = 'AUTHOR' then
      listbox2.Items.Add('Autor: '+documento.BuiltInDocumentProperties[indice].Value);
    if AnsiUpperCase(documento.BuiltInDocumentProperties[indice].Name) = 'COMPANY' then
      listbox2.Items.Add('Companhia: '+documento.BuiltInDocumentProperties[indice].Value);
    if AnsiUpperCase(documento.BuiltInDocumentProperties[indice].Name) = 'TEMPLATE' then
      listbox2.Items.Add('Modelo: '+documento.BuiltInDocumentProperties[indice].Value);
    if AnsiUpperCase(documento.BuiltInDocumentProperties[indice].Name) = 'APPLICATION NAME' then
      listbox2.Items.Add('Aplicação: '+documento.BuiltInDocumentProperties[indice].Value);
    if AnsiUpperCase(documento.BuiltInDocumentProperties[indice].Name) = 'LAST AUTHOR'   then
      listbox2.Items.Add('Ultimo Autor: '+documento.BuiltInDocumentProperties[indice].Value);
  end;
end;

 
Aqui temos algumas propriedades do arquivo, como Autor, Título, Modelo, etc...
 

Botão Selecionar Impressora:


procedure TForm1.btnSelImpressoraClick(Sender: TObject);
begin
  WordApplication1.ActivePrinter := '<nome da impressora>';
end;

 
Este botão tem como principal função setar a impressora para a impressão do documento, outro evento interessante deste documento é: DocWord.PageSetup.
 
Botão Imprimir:


procedure TForm1.btnImprimirClick(Sender: TObject);
begin
  if VerificaArquivo then
    WordApplication1.PrintOut;
end;

 
Aqui mandamos o arquivo para a impressora padrão do Windows, ou para a impressora selecionada anteriormente.
 
Botão Substituir:


procedure TForm1.btnSubstituirClick(Sender: TObject);
var Pesquisar, Substituir, substituirtodos: OleVariant;
begin
  Pesquisar := 'Active';
  Substituir := 'Active Delphi';
  substituirtodos := wdReplaceAll;
  DocWord.Content.find.Execute(pesquisar, EmptyParam, EmptyParam, EmptyParam, EmptyParam,   EmptyParam, EmptyParam, EmptyParam, EmptyParam, Substituir, substituirtodos, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
  ShowMessage('Alteracao Concluida');
end;


Neste procedimento substituímos a palavra “Active” pela palavra “Active Delphi”. O parâmetro wdReplaceAll nos possibilita substituir todas as palavras encontradas no documento pela palavra que especificamos na variável substituir.
 

Botão Salvar:


Novamente encontramos diferença nos parâmetros para salvar o arquivo da versão 6 do delphi para a versão 7. Portanto código do delphi 6 em azul e para delphi 7 em vermelho.
 
Código botão salvar para Delphi 6
 

procedure TForm1.btnSalvarClick(Sender: TObject);
var arquivo, senha: OleVariant;
begin
  try
    arquivo := 'c:\TesteActiveDelphi.doc';
    senha := 'gustavo';
    DocWord.SaveAs(arquivo, EmptyParam, EmptyParam, senha, EmptyParam, EmptyParam,     EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
    ShowMessage('Concluido');
  except
    Showmessage('Erro ao salvar.');
  end;
end;

 

Código botão salvar para Delphi 7


procedure TForm1.btnSalvarClick(Sender: TObject);
var arquivo, senha: OleVariant;
begin
  try
    arquivo := 'c:\TesteActiveDelphi.doc';
    senha := 'gustavo';
    DocWord.SaveAs(arquivo, EmptyParam, EmptyParam, senha, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
    ShowMessage('Concluido');
  except
    Showmessage('Erro ao salvar.');
  end;
end;

 

E por fim, desta forma, salvamos o arquivo no caminho especificado na variável arquivo. Definimos também na variável senha qual será a senha para abrir o arquivo. Se você não quiser colocar senha no arquivo apenas substitua o parâmetro onde vai a variável senha por EmptyParam.
 
Bom, para finalizar, se você quiser ver o conteúdo do documento sem formatação num RichEdit por exemplo, faça:
 
if VerificaArquivo then
  RichEdit1.Text := DocWord.Content.Text;

 
Era isso aí!
Grande abraço a todos e até a próxima.

 

Clique aqui para fazer o download do exemplo.
 
Contato:
gustavocco@yahoo.com.br  ou  gustavo@topsystem.com.br



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: lucas38545733@gmail.com (lucas38545733@gmail.com) : Jan 15, 2020 - 11:54
(Informações sobre o membro | Enviar uma mensagem)
Ajudou bastante, obrigado!!
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados