Ver Mensaje Individual
  #7  
Antiguo 12-05-2017
EagleKingson EagleKingson is offline
Registrado
 
Registrado: Apr 2015
Posts: 8
Reputación: 0
EagleKingson Va por buen camino
¡He regresado! Y esta vez con la noticia de que resolví el problema. Estoy seguro que a alguien le servirá así que les comparto mi solución.

En lugar de agregar la variante word al TDocumentWord se tiene que agregar el documento (variante document), es decir, estaba cometiendo el terrible error de intentar modificar una aplicación y no un documento. Y posteriormente trabajaremos con ese TDocumentWord. Por lo que quedaría así:

Código Delphi [-]
procedure TFmWord.Button1Click(Sender: TObject);
var
Word: Variant;
Documento: Variant;
sRutaPlantilla, sDocumento : OleVariant;
begin
   sRutaPlantilla := ExtractFilePath(Application.ExeName)+'Plantilla\Plantilla.dotx';
   sDocumento     := ExtractFilePath(Application.ExeName)+'Documento\Documento.doc';
   if not CampoCapturado(Edit1.Text) or
      not CampoCapturado(Memo1.Text) or
      not CampoCapturado(Edit3.Text) or
      not CampoCapturado(Edit4.Text) or
      not CampoCapturado(Edit5.Text) or
      not CampoCapturado(Edit6.Text) or
      not CampoCapturado(Edit7.Text) then
       exit;
   try
      Word := CreateOleObject('Word.Application');
      Word.Documents.Add(sRutaPlantilla);
      Documento := Word.Documents.Item(1);

      WordDocument1 := TWordDocument.Create(Application);
      WordDocument1.ConnectTo(IDispatch(Documento) as _Document);
      WordDocument1.Variables.Add('Nombre',     Edit1.Text);
      WordDocument1.Variables.Add('Direccion',  Memo1.Text);
      WordDocument1.Variables.Add('Folio',      Edit3.Text);
      WordDocument1.Variables.Add('Cantidad',   Edit4.Text);
      WordDocument1.Variables.Add('Empaque',    Edit5.Text);
      WordDocument1.Variables.Add('Volumen',    Edit6.Text);
      WordDocument1.Variables.Add('Peso',       Edit7.Text);
      WordDocument1.Fields.Update;
      InsertarTabla(DSFind, WordDocument1); //Con eto se llena la tabla usando el TWordDocument
      WordDocument1.ActiveWindow.View.ShowFieldCodes := False; //Forza a mostrar los valores y no las variables
      WordDocument1.SaveAs(sDocumento); //Guarda documento con nombre asignado

      //Cerramos el documento y la aplicación
      WordDocument1.Close;
      Word.Quit;
      Word:= Unassigned;
   except
      MessageDlg('Ocurrió un error al ejecutar',mtError,[mbOk],0);
   end;
end;

Con esto el problema queda resuelto.

¡Saludos!
Responder Con Cita