Amigo , se voce quiser inicializar sobre este tópico
leia isto:
Manipular Word através de Linha de Comando
Bom, estou aqui mais uma vez para escrever sobre algo simples e legal de se aprender, como manipular algumas funções básicas do Microsoft Word através de um mini-aplicativo Delphi.
Dá para fazer coisas interessantes, isso sem usar os componentes da palheta Servers, ainda estou ´fuçando´ nestes componentes para um melhor aproveitamento, mas por enquanto vamos a prática utilizando algumas linhas de comando.
Criei um mini-aplicativo que é a coisa mais fácil do mundo e ao mesmo tempo muito útil de se usar, eu queria poder imprimir alguns dados direto para impressora sem usar programas de terceiros, existe alguns comandos para se enviar diretamente de um componente Tmemo e até outros direto para a impressora, só que eu estava apanhando na hora de formatar o texto, queria que tivesse parágrafos, negrito, sublinhado e etc. Então pensei, porque não utilizar o Word, pois sempre que se inicia um novo documento, já está pré-configurado algumas coisas, tipo de fonte, tamanho e etc... sem contar que não existe ninguém com um pouco de conhecimento em computadores no mundo que não conheça o software do ´Tio Bill´!
A idéia era importar dados de um TEdit, algumas informações básicas além da data para um formato específico e mandar imprimir com opção de caso queira realizar alguma alteração, fosse possível, então pesquisei e encontrei alguns exemplos, peguei um pouco de cada dica e montei a minha própria.
A idéia deste artigo é ensinar a criar um documento novo no word, exibí-lo, formatar o alinhamento do parágrafo, tamanho, estilo e tipo de fonte, imprimir, salvar e fechar o mesmo. Então para ter uma idéia do que é possível fazer, criei um pequeno índice com os comandos possíveis:
Mudar o Tamanho da Fonte: MSWord.FontSize(24);
Mudar a Fonte Usada: MSWord.Font(´Arial´);
Colocar Itálico: MSWord.italic;
Retirar o Itálico: MSWord.italic(false);
Colocar Negrito: MSWord.bold;
Retirar Negrito: MSWord.bold(false);
Colocar Sublinhado: MSWord.underline;
Retirar Sublinhado: MSWord.underline(false);
Alinhamento Justificado: MSWord.JustifyPara;
Alinhamento a Direita: MSWord.RightPara;
Alinhamento a Esquerda: MSWord.LeftPara;
Alinhamento ao Centro: MSWord.CenterPara;
Quebrar página: MSWord.InsertPageBreak;
Salvar o Arquivo: MSWord.FileSaveAs(´c:\temp\test.txt´, 3);
Imprimir o Arquivo: MsWord.FilePrint;
Seleciona uma parte do texto: MSWord.LineUp(2, 1);
Monta uma tabela com o texto selecionado: MSWord.TextToTable(ConvertFrom := 2, NumColumns := 1);
Fechar Word 1: MsWord.Quit;
Fechar Word 2: MsWord.Close;
Em tempo: MSWord é uma variável do tipo variant, pode ser declarada global como local, recomendo que seja declarada global para não ter dores de cabeça.
Vamos a um exemplo prático:
Primeiro declare uma variável global para guardar as informações e manipular os comandos do WORD, o nome da variável pode ser qualquer um, desde que seja do tipo Variant, neste exemplo eu coloquei o nome de MSWord, e não esqueça de adicionar no Uses ComObj.
Var
MSWord: Variant;
Agora insira um botão e coloque o seguinte comando no evento OnClick:
Begin
MSWord:= CreateOleObject (´Word.Basic´); //cria o objeto
MSWord.AppShow; //mostra o word
MSWord.FileNew; //inicia um novo documento
MSWord.FontSize(24); //muda o tamanho da fonte
MSWord.italic; //coloca italico
MSWord.bold; //coloca negrito
MSWord.underline; //sublina
MSWord.CenterPara; //alinha ao centro
MSWord.insert(´Active Delphi´); //Escreve algo
MSWord.FontSize(12); //muda o tamanho da fonte
MSWord.Font(´Arial´); //muda a fonte usada
MSWord.underline(false); //retira o sublinhado
MSWord.italic(false); //retira o italico
MSWord.bold(false); //retira o bold
MSWord.LeftPara; //alinha a esquerda
MSWord.insert(#13+´O Site do programador´);//Pula uma linha e escreve
MSWord.LeftPara; //alinha a esquerda
MSWord.insert(13+9 +´Comandos do Word´);//nova linha e um TAB
MSWord.LineUp(2, 1); //seleciona uma parte do texto
MSWord.TextToTable(ConvertFrom := 2, NumColumns := 1);// monta uma tabela com o texto selecionado
MSWord.FileSaveAs(´c:\temp\test.txt´, 3); //Salva o arquivo
end;
Este comando que pode ser facilmente entendido, servirá para criar um documento no Word, escrever algo, alinha, muda o estilo da fonte como também o tamanho sendo que pode-se mandar o conteúdo de um Tedit ou outro componente que suporte texto como também uma variável string, já viu as possibilidades?. No final já salva com um nome específico; pode também determinar o nome do arquivo na hora de salvar utilizando um TsaveDialog:
// Salvar personalizado o arquivo
if SaveDialog1.Execute then
MSWord.SaveAs (WideString (SaveDialog1.Filename), 0);
MSWord.SaveAs (FileName := WideString (SaveDialog1.Filename),
FileFormat := 0, //formato nativo do word
SaveNativePictureFormat := 1); // true
end;
Além disso, pode-se também imprimir o conteúdo com apenas um clique, adicione um novo botão e no evento onclick digite o seguinte comando:
begin
MsWord.FilePrint;
End;
Obs. Lembre-se, a variável tem que ser global e o arquivo criado recentemente no Word precisa ainda estar aberto para que o comando MsWord.FilePrint consiga ser executado sem problemas.
Ele irá imprimir direto utilizando a impressora padrão do sistema, legal né, mas não é só isso, dá para fechar também o documento utilizando uma função bem fácil:
begin
PostMessage(FindWindow(nil, ´Microsoft Word – Documento1´), WM_CLOSE,0,0);
end;
Esta função fecha qualquer programa apenas pelo nome, caso esteja utilizando o Word2000 ou superior, coloque ´Documento1 – Microsoft Word´ mas lembre-se, se você mandar salvar o documento do Word verifique o nome que utilizou para poder mandar fechar.
Como estamos trabalhando com um mini-aplicativo para trabalhar em conjunto com o Word, ele deverá estar sempre visível, utilize o comando abaixo sempre que executar alguma ação:
begin
SetForegroundWindow(handle);
End;
Para mandar o seu aplicativo sempre para frente dos outros programas em execução e definir aposição do form na tela, utilize também as funções de Form.Top e Form.Left para definir a posição do form em tempo de execução, garanto que dá pra fazer programas simples mas muito poderosos.
Alguns devem até pensar´ para que isso?, utilizar o Word se o princípio da programação é a criação e não a cópia...Se formos pensar desta forma, eu poderia mudar de linguagem e ir para o VB ou utilizar o próprio Acces pois já que é da família Microsoft Office eu estaria em casa e não teria tantas dificuldades, mas como eu mesmo disse a respeito do princípio da programação, devemos criar, aperfeiçoar e se adaptar a novas e velhas tecnologias já existentes, tem um artigo no site a respeito de como apagar um arquivo e enviá-lo para lixeira, então eu te pergunto, já que eu quero apagar o arquivo para que isso também? Ele não estaria copiando a idéia de outros? Não, ele criou um mecanismo muito utilizado no Windows, só que para o nosso ambiente de desenvolvimento.
Imagina termos que utilizar o QuickReport para imprimir uma lista de chamada? dependendo dos dados que deseja imprimir você irá deixar seu programa muito mais enxuto e leve de executar utilizando esta opção de manipular o Word, imagine se você tem uma base de dados contendo nome de clientes e deseja criar uma lista de chamada, pode-se localizar todos pela data de nascimento, mandar para um TlistBox e mandar gerar uma tabela no word, a partir do momento que exportar os dados para o Word, o usuário estará com mil e uma possibilidades.
Valeu galera e até a próxima, espero ter ajudado mais uma vez e quero aproveitar para agradecer ao pessoal do site pela revista. ´Obrigadão´ mesmo, gostei muito da revista.
quanto a substituição o aroldo zanela ja enviou várias vezes codigo com macro substituição.. Infelismente eu não consegui localiza-los em meu Banco de Dados...
Mas se voce persquisar aquimesmo no forum , pelo título de Substituição Macro Word , e autor Aroldo Zanela , ira encontrar vasta documentação que talves lçhe seja util