Texto no Word

17/05/2003

1

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


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
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira