Ir al contenido


Foto

Enviar datos a una platinalla MS word desde lazarus


  • Por favor identifícate para responder
1 respuesta en este tema

#1 El_Chava

El_Chava

    Member

  • Miembros
  • PipPip
  • 40 mensajes

Escrito 06 julio 2015 - 08:52

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 


php
  1. procedure TFrmElaborarNotificacion.SpeedButton1Click(Sender: TObject);
  2. var
  3. Word: Variant;
  4. Documento,A, B, C: Variant;
  5. w:widestring;
  6. begin
  7. (* Creas un objeto Word *)
  8. try
  9. w:= WideString(UTF8Decode(ExtractFilePath(AnsiToUtf8(ParamStr(0)))+ pchar('C:\Proyecto lazarus 140\sisco14\Reportes\planilla.dot')));
  10. Word := CreateOleObject('Word.Application');
  11. (* Añades un documento basado en la plantilla *)
  12. Word.Documents.open(w);
  13. Documento := Word.Documents.Item(1);
  14. (*Asignas Valores a la Variables*)
  15. A:='Usuario';
  16. B:='computer #303';
  17. C:= 'sistema operativo';
  18. (* Asignas valores a los campos *)
  19. Documento.Variables.Add('Nombre', A);
  20. Documento.Variables.Add('Direccion', B);
  21. Documento.Variables.Add('Colonia', C);
  22. Word.ActiveWindow.View.ShowFieldCodes := false;
  23. Documento.Fields.Update;
  24. Word.Visible := true; {Make Word visible}
  25. except
  26. on E: Exception do
  27. ShowMessage(SysToUTF8(E.Message));
  28. end;


  • 1

#2 El_Chava

El_Chava

    Member

  • Miembros
  • PipPip
  • 40 mensajes

Escrito 06 julio 2015 - 12:03

Hola de nuevo ya encontre la solución al mi problema les dejo el código. 

 


php
  1. procedure TFrmElaborarNotificacion.SpeedButton1Click(Sender: TObject);
  2. var
  3. Word: Variant;
  4. Documento,A, B, C: Variant;
  5. w:widestring;
  6. begin
  7. (* Creas un objeto Word *)
  8. try
  9. {* a la variable "w" le asigno la ruta donde se encuentra la plantilla a utilizar *}
  10. w:= UTF8Decode(ExtractFilePath(application.ExeName)+'Reportes\plantilla2015.dot');
  11. Word := CreateOleObject('Word.Application');
  12. (* Añades un documento basado en la plantilla *)
  13. Documento := Word.Documents.Add(w);
  14. Documento := Word.Documents.Item(1);
  15.  
  16. (*Asignas Valores a la Variables*)
  17. A:='Usuario';
  18. B:='Lazarus ';
  19. C:= 'Object Pascal';
  20.  
  21. (* Asignas valores a los campos *)
  22. Documento.Variables.Add('Nombre', A);
  23. Documento.Variables.Add('Direccion', B);
  24. Documento.Variables.Add('Colonia', C);
  25. Word.ActiveWindow.View.ShowFieldCodes := false;
  26. Documento.Fields.Update;
  27. Word.Visible := true; {Make Word visible}
  28.  
  29. except
  30. on E: Exception do
  31. ShowMessage(SysToUTF8(E.Message));
  32. end;


  • 1




IP.Board spam blocked by CleanTalk.