PDA

Ver la Versión Completa : Enviar datos a una plantilla MS Word desde Lazarus


El_Chava
06-07-2015, 16:49:57
Hola amigos del foro, esperando que se encuentren bien aquí de nuevo con un problema y es el siguiente. Necesito usar una platilla de MS word y enviarle los datos desde lazarus. Uso la versión 1.4.0 de lazarus. Buscando ejemplos de como hacerlo encontre uno de tanto que hay en el foro pero al tratar de ejecutarlo me muestra el siguiente mensaje de error "El elemento del conjunto solicitado no existe." y no se como resolver el problema estuve buscando en san google pero no encontre nada en si que me pudiera ayudar a resolverlo. Espero sus respuestas y muchas gracias de antemano saludos


procedure TFrmElaborarNotificacion.SpeedButton1Click(Sender: TObject);
var
Word: Variant;
Documento,A, B, C: Variant;
w:widestring;
begin
(* Creas un objeto Word *)
try
w:= WideString(UTF8Decode(ExtractFilePath(AnsiToUtf8(ParamStr(0)))+ pchar('C:\Proyecto lazarus 140\sisco14\Reportes\planilla.dot')));
Word := CreateOleObject('Word.Application');
(* Añades un documento basado en la plantilla *)
Word.Documents.open(w);
Documento := Word.Documents.Item(1);
(*Asignas Valores a la Variables*)
A:='Usuario';
B:='computer #303';
C:= 'sistema operativo';
(* Asignas valores a los campos *)
Documento.Variables.Add('Nombre', A);
Documento.Variables.Add('Direccion', B);
Documento.Variables.Add('Colonia', C);
Word.ActiveWindow.View.ShowFieldCodes := false;
Documento.Fields.Update;
Word.Visible := true; {Make Word visible}
except
on E: Exception do
ShowMessage(SysToUTF8(E.Message));
end;
end;

El_Chava
06-07-2015, 20:05:12
Hola de nuevo ya encontre la solución al mi problema les dejo el código.

procedure TFrmElaborarNotificacion.SpeedButton1Click(Sender: TObject);
var
Word: Variant;
Documento,A, B, C: Variant;
w:widestring;
begin
(* Creas un objeto Word *)
try
{* a la variable "w" le asigno la ruta donde se encuentra la plantilla a utilizar *}
w:= UTF8Decode(ExtractFilePath(application.ExeName)+'Reportes\plantilla2015.dot');
Word := CreateOleObject('Word.Application');
(* Añades un documento basado en la plantilla *)
Documento := Word.Documents.Add(w);
Documento := Word.Documents.Item(1);

(*Asignas Valores a la Variables*)
A:='Usuario';
B:='Lazarus ';
C:= 'Object Pascal';

(* Asignas valores a los campos *)
Documento.Variables.Add('Nombre', A);
Documento.Variables.Add('Direccion', B);
Documento.Variables.Add('Colonia', C);
Word.ActiveWindow.View.ShowFieldCodes := false;
Documento.Fields.Update;
Word.Visible := true; {Make Word visible}

except
on E: Exception do
ShowMessage(SysToUTF8(E.Message));
end;
end;

ecfisa
06-07-2015, 20:09:35
Muchas gracias por compartir la solución ^\||/

Saludos :)

Casimiro Notevi
06-07-2015, 20:40:28
^\||/^\||/^\||/

nlsgarcia
06-07-2015, 21:06:58
El_Chava,


...ya encontré la solución...les dejo el código...

^\||/

Nelson.

El_Chava
06-07-2015, 22:56:24
Muchas gracias por compartir la solución ^\||/

Saludos :)

De nada para eso estamos para ayudar y compartir soluciones ^\||/ :)