Texto no Word
17/05/2003
0
Agradeco desde ja qualquer ajuda
Ronaldomr
Posts
17/05/2003
Afischer
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
19/05/2003
Ronaldomr
ronaldo.mr@ig.com.br
11/09/2003
Jhfeller
não está encontrando os mesmos.
Se você recebeu a rotina poderia me repassá-la.
Email: superlanz@terra.com.br
Clique aqui para fazer login e interagir na Comunidade :)