Fórum Abra o WinWord em Delphi e troque Strings no Documento #142348

02/03/2003

0

Otimo exemplo para quem quer usar o Delphi para alimentar um documento escrito em Word com informações dinâmicas. Exemplo: Mala direta, contratos, propostas, etc.


uses
ComObj;

type TWordReplaceFlags = set of (wrfReplaceAll, wrfMatchCase, wrfMatchWildcards);
function Word_StringReplace(ADocument: TFileName; SearchString, ReplaceString: string; Flags: TWordReplaceFlags): Boolean;
const wdFindContinue = 1;
wdReplaceOne = 1;
wdReplaceAll = 2;
wdDoNotSaveChanges = 0;
var WordApp: OLEVariant;
begin
Result := False;
if not FileExists(ADocument) then begin
ShowMessage(´O Documento ´+ADocument+´ não foi encontrado!´);
Exit;
end;

try
WordApp := CreateOLEObject(´Word.Application´);
except
on E: Exception do
begin
E.Message := ´Instale o Microsoft Word!´;
raise;
end;
end;

try
WordApp.Visible := False;
WordApp.Documents.Open(ADocument);
WordApp.Selection.Find.ClearFormatting;
WordApp.Selection.Find.Text := SearchString;
WordApp.Selection.Find.Replacement.Text := ReplaceString;
WordApp.Selection.Find.Forward := True;
WordApp.Selection.Find.Wrap := wdFindContinue;
WordApp.Selection.Find.Format := False;
WordApp.Selection.Find.MatchCase := wrfMatchCase in Flags;
WordApp.Selection.Find.MatchWholeWord := False;
WordApp.Selection.Find.MatchWildcards := wrfMatchWildcards in Flags;
WordApp.Selection.Find.MatchSoundsLike := False;
WordApp.Selection.Find.MatchAllWordForms := False;
if wrfReplaceAll in Flags then
WordApp.Selection.Find.Execute(Replace := wdReplaceAll)
else
WordApp.Selection.Find.Execute(Replace := wdReplaceOne);
WordApp.ActiveDocument.SaveAs(ADocument);
Result := True;
WordApp.ActiveDocument.Close(wdDoNotSaveChanges);
finally
WordApp.Quit;
WordApp := Unassigned;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Word_StringReplace(´C:\\temp\\Teste.doc´,´¬nome¬´,´Adenilton´,[wrfReplaceAll]);
end;


Carnette

Carnette

Responder

Posts

29/02/2004

Czapelini

Olá Carnette,
Sua dica foi muito valiosa para mim...
Porém preciso de sua ajuda para resolver um problema semelhante:

Tenho um documento word, com várias páginas. Ele foi gerado a partir de uma mala direta.
Sendo assim, para todos os clientes tem-se um único arquivo.
Preciso, através do delphi, separar este arquivo em vários outros arquivos, ou seja, para cada cliente preciso ter um arquivo separado.
Lembrando que o número de páginas não é fixo para cada cliente, o que identifica que foi outro arquivo é o código do cliente.

Por acaso sabes como fazer isto?
Te agradeço desde já.
Valeu!


Responder

Gostei + 0

13/11/2008

N_informatica

Parabens pelo exemplo funciona 110¬ mas tenho ainda uma duvida.

Como devo fazer para que seja exibido o dialogo para seleção das impressoras?

Se puder me ajudar fico grato.

Atenciosamente,

Tadeu Rodrigues de Oliveira.
Números Informática.


Responder

Gostei + 0

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

Aceitar