Trocar vários campos no Word.
Boa Tarde,
Uso o Delphi 7 e faço a impressão de um texto no word trocando alguns campos com o comando
MsWord.Content.Find.Execute(FindText := '<Data>', ReplaceWith := formataData(Now));
Porém, se no meu arquivo do WORD tiver o campo <Data> mais de uma vez, não será substituída.
Como faço para substituir todos os campos?
Desde já agradeço.
Uso o Delphi 7 e faço a impressão de um texto no word trocando alguns campos com o comando
MsWord.Content.Find.Execute(FindText := '<Data>', ReplaceWith := formataData(Now));
Porém, se no meu arquivo do WORD tiver o campo <Data> mais de uma vez, não será substituída.
Como faço para substituir todos os campos?
Desde já agradeço.
Dirceu Morais
Curtidas 0
Respostas
Dirceu Morais
25/07/2014
Consegui resolver,
Acrescentei replace := 2 ao final do comando e funfou, ficou assim:
Obrigado a todos.
Acrescentei replace := 2 ao final do comando e funfou, ficou assim:
MsWord.Content.Find.Execute(FindText := '<Data>', ReplaceWith := formataData(Now), replace := 2);
Obrigado a todos.
GOSTEI 0
Dirceu Morais
25/07/2014
Pessoal agora estou tentando preencher o cabeçalho do meu arquivo DOC e não estou conseguindo.
Se eu testar criando um arquivo novo conforme código abaixo dá certo.
Mas eu já tenho o meu texto pronto, da erro "method selection not supported"
Se eu testar criando um arquivo novo conforme código abaixo dá certo.
procedure TForm1.Button1Click(Sender: TObject);
var
Word: Variant;
begin
{ Abre o Word }
Word := CreateOleObject('Word.Application');
try
{ Aqui *** Novo documento ** }
Word.Documents.Add;
try
{ Adiciona tabela de 2 linhas e 3 colunas }
Word.ActiveDocument.Tables.Add(
Range := Word.Selection.Range,
NumRows := 2,
NumColumns := 3);
{ Escreve na primeira célula }
Word.Selection.TypeText(Text := 'Linha 1, Coluna 1');
{ Próxima célula }
Word.Selection.MoveRight(12);
{ Escreve }
Word.Selection.TypeText(Text := 'Linha 1, Coluna 2');
Word.Selection.MoveRight(12);
Word.Selection.TypeText(Text := 'Linha 1, Coluna 3');
Word.Selection.MoveRight(12);
Word.Selection.TypeText(Text := 'Linha 2, Coluna 1');
Word.Selection.MoveRight(12);
Word.Selection.TypeText(Text := 'Linha 2, Coluna 2');
Word.Selection.MoveRight(12);
Word.Selection.TypeText(Text := 'Linha 2, Coluna 3');
{ Auto-Formata }
Word.Selection.Tables.Item(1).Select; { Seleciona a 1º tabela }
Word.Selection.Cells.AutoFit; { auto-formata }
{ Imprime 1 cópia }
Word.ActiveDocument.PrintOut(Copies := 1);
ShowMessage('Aguarde o término da impressão...');
{ Para salvar... }
Word.ActiveDocument.SaveAs(FileName := 'c:\Tabela.doc');
finally
{ Fecha documento }
Word.ActiveDocument.Close(SaveChanges := 0);
end;
finally
{ Fecha o Word }
Word.Quit;
end;
end;
Mas eu já tenho o meu texto pronto, da erro "method selection not supported"
procedure TForm1.Button1Click(Sender: TObject);
var
Word: Variant;
begin
{ Abre o Word }
Word := CreateOleObject('Word.Application');
try
SavePath := ExtractFilePath(Application.ExeName);
//Se cria uma copia para proteger a MATRIZ
//Se arquivo já existe apaga, para criar um novo
If FileExists(SavePath+ 'Ficha.doc') Then
DeleteFile(SavePath+ 'Ficha.doc');
CopyFile(pchar(txtCaminhoFormula.Text),pchar(SavePath+ 'Ficha.doc'),true);
//Abre o documento
Word := NewWord.Documents.Open(SavePath+ 'Ficha.doc');
try
{ Adiciona tabela de 2 linhas e 3 colunas }
//DÁ ERRO ARQUI
method selection not supported
Word.ActiveDocument.Tables.Add(
Range := Word.Selection.Range,
NumRows := 2,
NumColumns := 3);
{ Escreve na primeira célula }
//DÁ ERRO ARQUI
method selection not supported
Word.Selection.TypeText(Text := 'Linha 1, Coluna 1');
{ Próxima célula }
Word.Selection.MoveRight(12);
{ Escreve }
Word.Selection.TypeText(Text := 'Linha 1, Coluna 2');
Word.Selection.MoveRight(12);
Word.Selection.TypeText(Text := 'Linha 1, Coluna 3');
Word.Selection.MoveRight(12);
Word.Selection.TypeText(Text := 'Linha 2, Coluna 1');
Word.Selection.MoveRight(12);
Word.Selection.TypeText(Text := 'Linha 2, Coluna 2');
Word.Selection.MoveRight(12);
Word.Selection.TypeText(Text := 'Linha 2, Coluna 3');
{ Auto-Formata }
Word.Selection.Tables.Item(1).Select; { Seleciona a 1º tabela }
Word.Selection.Cells.AutoFit; { auto-formata }
{ Imprime 1 cópia }
Word.ActiveDocument.PrintOut(Copies := 1);
ShowMessage('Aguarde o término da impressão...');
{ Para salvar... }
Word.ActiveDocument.SaveAs(FileName := 'c:\Tabela.doc');
finally
{ Fecha documento }
Word.ActiveDocument.Close(SaveChanges := 0);
end;
finally
{ Fecha o Word }
Word.Quit;
end;
end;
GOSTEI 0