Texto no Word
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
Agradeco desde ja qualquer ajuda
Ronaldomr
Curtidas 0
Respostas
Afischer
17/05/2003
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
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
GOSTEI 0
Ronaldomr
17/05/2003
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
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
GOSTEI 0
Jhfeller
17/05/2003
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
não está encontrando os mesmos.
Se você recebeu a rotina poderia me repassá-la.
Email: superlanz@terra.com.br
GOSTEI 0