Hola.
Este trozo de código recorre una tabla, abre un documento word, sustituye unos campos determinados por su valor en la tabla, envía a imprimir y continua con el siguiente registro:
Código Delphi
[-]
TablaCuentas.First;
while not TablaCuentas.Eof do begin
WordApplication1 := CreateOleObject('Word.Application');
WordApplication1.Visible := False;
WordApplication1.Documents.Open(NtEditImpreso.Text);
WordApplication1.Selection.Find.ClearFormatting;
WordApplication1.Selection.Find.Forward := vForward;
WordApplication1.Selection.Find.Wrap := vWrap;
WordApplication1.Selection.Find.Format := False;
WordApplication1.Selection.Find.MatchWholeWord := False;
WordApplication1.Selection.Find.MatchSoundsLike := False;
WordApplication1.Selection.Find.MatchAllWordForms := False;
for N:=0 to TablaCuentas.FieldCount-1 do begin
vFindText := '['+'TABLA.'+TablaCuentas.Fields[N].FieldName+']' ;
vReplaceWith := TablaCuentas.FieldByname(TablaCuentas.Fields[N].FieldName).AsString;
WordApplication1.Selection.Find.Text := vFindText;
WordApplication1.Selection.Find.Replacement.Text := vReplaceWith;
WordApplication1.Selection.Find.Execute(Replace := wdReplaceAll);
end;
WordApplication1.ActiveDocument.PrintOut;
application.ProcessMessages;
WordApplication1.ActiveDocument.close(0);
WordApplication1.quit;
TablaCuentas.Next;
end;
las variables que tienes que usar son las siguientes:
Código Delphi
[-]
var
Documento: Variant;
WordApplication1: Variant;
vFindText : OleVariant;
vReplaceWith : OleVariant;
vWrap : OleVariant;
vMatchCase : OleVariant;
vMatchWholeWord : OleVariant;
vReplace : OleVariant;
vForward : OleVariant;
Tabla,TablaCuentas: TedbTable;
y debes de agregar al "uses" del formulario:
Código Delphi
[-]
uses
OleServer, WordXP, Comobj
Para determinar qué campos son los que hay que sustituir en el documento word lo que hago es identificarlos de la manera siguiente:
[TABLA.CAMPO1]....texto texto texto....[TABLA.CAMPO2] ... etc.
Creo que no se me olvida nada, si no te funciona me lo comentas.
Saludos