Texto no Word

17/05/2003

0

Eu tenho um texto no word que é um contrato de locação, existe como eu acessar este arquivo e eu alterar este contrato colocando nome do locatario no meio do contrato e depois imprimir ?
Agradeco desde ja qualquer ajuda


Ronaldomr

Ronaldomr

Responder

Posts

17/05/2003

Afischer

caro delphiano,

Eu tenho a solução para o teu problema. 8)

Sei que ela funciona, pois também uso um contrato feito no Word que é preenchido pelo Delphi. Aí vai a dica

uses
// você precisa desta unit para trabalhar com a automaçào OLE
ComObj;

...


procedure TForm1.Button1Click(Sender: TObject);
var
Word: Variant;

begin

Screen.Cursor := crHourglass;
try
// cria uma instância do Word
Word := CreateOleObject( ´Word.Application´ );
except
// caso ocorra algum problema a mensagem é mostrada
ShowMessage( ´Problema na inicialização do MS Word.´ );
Screen.Cursor := crDefault;
exit;
end;

try
// abre um documento Word
Word.Documents.Add( Template := ´C:\Contrato.doc´ );

// mostra Word
Word.Visible := true;

// if um campo formulário existe então coloca texto no campo
if Word.ActiveDocument.Bookmarks.Exists( ´NomeCampoDoWord´ ) then
Word.ActiveDocument.FormFields.Item( ´NomeCampoDoWord´ ).Result := ´SeuTexto´;

finally

Word := Unassigned;
Screen.Cursor := crDefault;

end;

end;


Neste caso você precisa criar um documento Word contendo campos. Este procedimento procura pelo nome do campo e atribui um texto a ele.

No meu caso criei uma matriz para o valores do campo e texto, pois estou substituindo vários campos no documento.

Campos: array[ 1..15, 1..2 ] e defini seus valores do seguinte modo...

Campos[ 1, 1 ] := ´NomeDoCampo´;
Campos[ 1, 2 ] := ´Texto para o campo´;
Campos[ 2, 1 ] := ´NomeDoOutroCampo´;
Campos[ 2, 2 ] := ´Texto para o outro campo´;
...
Campos[ 15, 1 ] := ´NomeDoOutroCampo´;
Campos[ 15, 2 ] := ´Texto para o outro campo´;


Depois, na ora de verificar se o campo existe no documento, só utilizei

for i := 1 to 15 do
if Word.ActiveDocument.Bookmarks.Exists( Campos[ i, 1 ]´ ) then
Word.ActiveDocument.FormFields.Item( Campos[ i, 1 ] ).Result := Campos[ i, 2 ];


Pronto :D


Espero ter ajudado



André Fischer


Responder

19/05/2003

Ronaldomr

Voce poderia me mandar o modelo do seu contrato no word, pois nao estou conseguindo colocar os campos no contrato.

ronaldo.mr@ig.com.br



caro delphiano, Eu tenho a solução para o teu problema. 8) Sei que ela funciona, pois também uso um contrato feito no Word que é preenchido pelo Delphi. Aí vai a dica uses // você precisa desta unit para trabalhar com a automaçào OLE ComObj; ... procedure TForm1.Button1Click(Sender: TObject); var Word: Variant; begin Screen.Cursor := crHourglass; try // cria uma instância do Word Word := CreateOleObject( ´Word.Application´ ); except // caso ocorra algum problema a mensagem é mostrada ShowMessage( ´Problema na inicialização do MS Word.´ ); Screen.Cursor := crDefault; exit; end; try // abre um documento Word Word.Documents.Add( Template := ´C:\Contrato.doc´ ); // mostra Word Word.Visible := true; // if um campo formulário existe então coloca texto no campo if Word.ActiveDocument.Bookmarks.Exists( ´NomeCampoDoWord´ ) then Word.ActiveDocument.FormFields.Item( ´NomeCampoDoWord´ ).Result := ´SeuTexto´; finally Word := Unassigned; Screen.Cursor := crDefault; end; end; Neste caso você precisa criar um documento Word contendo campos. Este procedimento procura pelo nome do campo e atribui um texto a ele. No meu caso criei uma matriz para o valores do campo e texto, pois estou substituindo vários campos no documento. Campos: array[ 1..15, 1..2 ] e defini seus valores do seguinte modo... Campos[ 1, 1 ] := ´NomeDoCampo´; Campos[ 1, 2 ] := ´Texto para o campo´; Campos[ 2, 1 ] := ´NomeDoOutroCampo´; Campos[ 2, 2 ] := ´Texto para o outro campo´; ... Campos[ 15, 1 ] := ´NomeDoOutroCampo´; Campos[ 15, 2 ] := ´Texto para o outro campo´; Depois, na ora de verificar se o campo existe no documento, só utilizei for i := 1 to 15 do if Word.ActiveDocument.Bookmarks.Exists( Campos[ i, 1 ]´ ) then Word.ActiveDocument.FormFields.Item( Campos[ i, 1 ] ).Result := Campos[ i, 2 ]; Pronto :D Espero ter ajudado André Fischer



Responder

11/09/2003

Jhfeller

Segui os passos acima mas o comando de busca dos campos
não está encontrando os mesmos.

Se você recebeu a rotina poderia me repassá-la.
Email: superlanz@terra.com.br


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar