GARANTIR DESCONTO

Fórum Alterar documento no Word #284658

14/06/2005

0

Senhores,


Estou montando uma aplicação para abrir um contrato no Word e alterar os dados segundo um registro selecionado no cadastro de cliente. Para isso eu gostaria de saber qual é o comando que eu posso adicionar um texto no documento e também alterar algumas propriedades como Negrito, Itálico e margem para parágrafo.

Agradeço desde já pela ajuda,


Chmeireles

Chmeireles

Responder

Posts

14/06/2005

Marco Salles

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


Responder

Gostei + 0

15/06/2005

Chmeireles

Legal esse artigo.

Acontece que eu já tenho um rotina montada com o uso da Paleta Servers e esse artigo está usando um tipo de varíavel Variant. Eu não sei usar esse tipos de recursos.

Eu que eu preciso somente descobrir uma maneira para inserir um texto em ponto específico do documento e também formatá-lo, usando a paleta servers.

Agradeço desde já pela ajuda,


Responder

Gostei + 0

15/06/2005

Marco Salles

Eu que eu preciso somente descobrir uma maneira para inserir um texto em ponto específico do documento


Voce localizou os tópicos que eu lhe sugeri

quanto a substituição o aroldo zanela ja enviou várias vezes codigo com macro substituição


isto não lhe serveira :?: :?: :?:


Responder

Gostei + 0

15/06/2005

Chmeireles

Acontece, que nesse artigo está falando de alterações de texto com Word.Basic, só que estou usando a paleta servers, eu não sei se ela é tão boa, por isso, preciso de um opinião sua. Vc acha que seria melhor usar Word.Basic com o CreateOleObject do que usar a paleta Servers?

Eu posso deixar usar a paleta servers, porém preciso saber como fazer certas operações, tipo substituir texto, adicionar textos, eliminar textos. Tem algum outro lugar onde posso encontrar comandos? Por favor, me ajude, estou precisando muito.

Agradeço desde já pela sua ajuda,


Responder

Gostei + 0

15/06/2005

Marco Salles

Amigo Carlos , eu nun to entendendo... Sobre o artigo , voce ja deu sua opinião... Eu não estou mais falando do Artigo...

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

quanto a substituição o aroldo zanela ja enviou várias vezes codigo com macro substituição


A outra sugestão que eu lhe dei foi encontrar as dicas passadas pelo amigo Aroldo Zanela , sobre esse asunto..

Voce consegui localizar esses tópicos que eu lhe passei, ou não os encontrou , ou ja os encontrou e não lhe foi útil :?: :?: :?:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar