Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 29-08-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues me ha funcionado tal cual. De cualquier manera te he preparado un ejemplo para que lo pruebes. Tiene algunas pequeñas diferencias como el uso de OleVariant en lugar de Variant, pero no creo que esto afecte realmente.

También agregué el método:

Código Delphi [-]
Word.ActiveWindow.View.ShowFieldCodes := false;

que debe forzar a que se vean los valores y no los campos. Si te marca un error, simplemente quita esa línea.

Va incluido el ejecutable, pero sólo funcionará si tienes instalado el Delphi 7.

// Saludos
Archivos Adjuntos
Tipo de Archivo: zip wordplantilla.zip (10,9 KB, 252 visitas)
Responder Con Cita
  #22  
Antiguo 29-08-2006
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 21
Manuel Va por buen camino
gracias roman, ahora todo bien
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #23  
Antiguo 08-03-2007
arthurmax arthurmax is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
arthurmax Va por buen camino
Question La plantilla no cierra

El ejercicio me funciona perfectamente, excepto por el hecho que la plantilla ".dot", queda abierta aún cerrando la aplicación en la que se genera el documento de Word, agradezco que me puedan decir cómo cierro la plantilla.

Gracias
Responder Con Cita
  #24  
Antiguo 07-08-2007
fmatias fmatias is offline
Miembro
 
Registrado: jun 2003
Posts: 25
Poder: 0
fmatias Va por buen camino
Qusiera aprovechar este hilo para intentar resolver mi problema.
Tengo una variante del código descrito anteriormente que comprueba si existe ya un documento de word.

Si existe el documento abre el existente y si no existe abre el documento plantilla.

Código Delphi [-]
  Word: Variant;
  Documento: Variant;

begin
 (* Creamos un objeto Word *)
  Word := CreateOleObject('Word.Application');

  (* Añadimos un documento basado en la plantilla *)
  if FileExists(dbDOC.field.value) then   // si existe el fichero lo abrimos
     documento:=Word.Documents.Open(dbDOC.field.value)
  else  // abrimos la plantilla
    Word.Documents.Add(ExtractFilePath(Application.ExeName)+'Docs\Plantillas\caso1.dot');

    Documento := Word.Documents.Item(1);
    (* Asignas valores a los campos *)
    Documento.Variables.Add('Nombre',nombre );
    Documento.Variables.Add('Direc', direccion);
    Documento.Variables.Add('Local', localidad);
    Documento.Variables.Add('Prov', provincia);

    
    Word.ActiveDocument.SaveAs(ExtractFilePath(Application.ExeName)+'Docs\1Notificacion\'+dbidReg.field.  value);
    // actualizamos la tabla con el nuevo nombre de fichero 
    adocartas1.Edit ;
    dbDOC.field.value:=ExtractFilePath(Application.ExeName)+'Docs\1Notificacion\'+dbidReg.field.value+'.  doc';
    adocartas1.Post ;

   Documento.Fields.Update;
   Word.ActiveWindow.View.ShowFieldCodes := false;
   Word.Visible := true;

end;

Cuando abre el documento plantilla, va perfectamente, pero al abrir un documento existente me aparece un mensaje indicando que ya existe ese nombre de variable refirendose al código donde se añaden las variables.

¿Es posible limpiar las variables creadas en el documento existente?

Quedo pendiente de vuestras respuestas.
__________________
www.creativoz.com
Responder Con Cita
  #25  
Antiguo 14-03-2008
ingel ingel is offline
Miembro
 
Registrado: jun 2003
Posts: 239
Poder: 21
ingel Va por buen camino
he encontrado este hilo y es 'casi' lo que necesito..

pero mi pregunta es la siguiente ..puedo generar el archivo 'modelo' el .dot DESDE delphi .. para que asi sean los usuario los que creen los modelos y ponerles a disposicion una serie de VARIABLES que serian los datos que irian entre {} ... que saldrian de un SQL

Gracias a todos
Sds
Responder Con Cita
  #26  
Antiguo 17-09-2008
Avatar de luchin001
luchin001 luchin001 is offline
Miembro
 
Registrado: may 2003
Posts: 36
Poder: 0
luchin001 Va por buen camino
Me he cabeceado 2 dias tratando de encontrar la forma de hacerlo, luego me acorde del clubdelphi , lei este hilo y solucionado !

gracias, muchas gracias ...
Responder Con Cita
  #27  
Antiguo 14-11-2008
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
Hola compañeros de Delphi. Siguiendo este ejemplo del word al final me ha funcionado bien pero al cerrar la aplicacion me sale este error:

En tienpo de ejecucion --> "Runtime error 216 at 0043A1A"
En tienpo de diseño --> "Access violation at address 774FCAFC en module ole32.dll".

Como lo puedo solucionar.

PD. Este error que me sale al finalizar el programa no me impide que lo cierre y que vuelva a ejecutarlo otra vez, pero no da una buena impresión.
Responder Con Cita
  #28  
Antiguo 28-11-2008
romacruzz romacruzz is offline
Registrado
 
Registrado: oct 2008
Posts: 6
Poder: 0
romacruzz Va por buen camino
sobre este ejemplo tengo una duda

Tenemos varias [FONT='Verdana','sans-serif']DOCVARIABLE nombre\* MERGEFORMAT } en una plantilla o machote , en delphi queremos programar las busqueda para que encuentre dentro de la platilla estas variables [FONT='Verdana','sans-serif']DOCVARIABLE nombre\* MERGEFORMAT } sustituirlas por informacion que tenemos en una base de datos....Como hacemos esto amigos..[/font][/font]
[FONT='Verdana','sans-serif'][/font]
[FONT='Verdana','sans-serif'][FONT='Verdana','sans-serif']No hay mucha informacion de como tratar archivos de word en delphi...[/font][/font]
[FONT='Verdana','sans-serif']
[/font]






Cita:
Empezado por fmatias Ver Mensaje
Qusiera aprovechar este hilo para intentar resolver mi problema.
Tengo una variante del código descrito anteriormente que comprueba si existe ya un documento de word.

Si existe el documento abre el existente y si no existe abre el documento plantilla.


Código Delphi [-]
Word: Variant;
Documento: Variant;

begin
(* Creamos un objeto Word *)
Word := CreateOleObject('Word.Application');

(* Añadimos un documento basado en la plantilla *)
if FileExists(dbDOC.field.value) then // si existe el fichero lo abrimos
documento:=Word.Documents.Open(dbDOC.field.value)
else // abrimos la plantilla
Word.Documents.Add(ExtractFilePath(Application.ExeName)+'Docs\Plantillas\caso1.dot');

Documento := Word.Documents.Item(1);
(* Asignas valores a los campos *)
Documento.Variables.Add('Nombre',nombre );
Documento.Variables.Add('Direc', direccion);
Documento.Variables.Add('Local', localidad);
Documento.Variables.Add('Prov', provincia);


Word.ActiveDocument.SaveAs(ExtractFilePath(Application.ExeName)+'Docs\1Notificacion\'+dbidReg.field. value);
// actualizamos la tabla con el nuevo nombre de fichero
adocartas1.Edit ;
dbDOC.field.value:=ExtractFilePath(Application.ExeName)+'Docs\1Notificacion\'+dbidReg.field.value+'. doc';
adocartas1.Post ;

Documento.Fields.Update;
Word.ActiveWindow.View.ShowFieldCodes := false;
Word.Visible := true;

end;





Cuando abre el documento plantilla, va perfectamente, pero al abrir un documento existente me aparece un mensaje indicando que ya existe ese nombre de variable refirendose al código donde se añaden las variables.

¿Es posible limpiar las variables creadas en el documento existente?

Quedo pendiente de vuestras respuestas.
Responder Con Cita
  #29  
Antiguo 08-01-2009
inirio inirio is offline
Registrado
 
Registrado: may 2006
Posts: 3
Poder: 0
inirio Va por buen camino
Alejandro inirio

no complicaos
escribeme a mi email i te sire como hacer reporte en word de manera facil
inirioalejandro@gmail.com
Responder Con Cita
  #30  
Antiguo 08-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Alejandro,

Estos foros son para compartir conocimientos entre todos. Si tienes algo que aportar puedes escribir aquí mismo un mensaje o poner tu aporte en el FTP del club.

Si manejamos las cosas por correos privados, se pierde el sentido de los foros.

// Saludos
Responder Con Cita
  #31  
Antiguo 11-01-2009
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
Mostrar Valor Campos En Vez De Nombre De Campos De La Plantilla

Cita:
Empezado por Manuel Ver Mensaje
a pesar de todo los cambios incluso los que me propobe roman, igual sigo sin ver el resultado.
Hola Manuel, no es tarde la respuesta es solo que segui este tema para enviar datos a word. La solucion Manual al problema es que debes en el .Dot Tener :
menu tools, menu options, tabsheet view Field Codes sin marcar (no chulo), lo que no se es como decirlo desde delphi .

Una vez lo elimna la marca salva el archivo .dot y genera nuevamente la impresion y esto hace que funcione

Gracias a los usarios de es tema por sus comentarios
Responder Con Cita
  #32  
Antiguo 12-01-2009
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
Usando Tablas??

Hola Roman gracias por la informacion de word, podrias ayudarnos ampliando este mensaje para procesar una factura en word. la idea basica es
header igual para todas las paginas
detalle detalle del producto
totales totales del producto


LOGO XXXXXXXXXXXXXXX CIA NOMBRE


CLIENTE NOMBRE CLIENTE FACTURA FECHA
XXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXX XXXXXX

PRODUCTO DESCRIPCION CANTIDAD UNITARIO TOTAL IMPUESTO
XXXXXXX XXXXXXXXXX 1 100.25 100.25 16%
XXXXXXX XXXXXXXXXX 1 100.25 100.25 16%
XXXXXXX XXXXXXXXXX 1 100.25 100.25 16%
XXXXXXX XXXXXXXXXX 1 100.25 100.25 16%
...

TOTAL IMPUESTA 1250.00 TOTAL fACTURA 100.55


usando el ejemplo no pude colocar valores en el header o en el footer, y tampoco sabria como hacer las lineas del detalle


Prodrias ayudarno con algunas lineas de codigo y/o ejmeplo

Gracias
Responder Con Cita
  #33  
Antiguo 12-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En el header y el footer de Word puedes insertar también variables de documento como las del ejemplo.

Para el caso de una tabla ya es distinto. Podrías combinar esto con el ejemplo de aquí.

// Saludos
Responder Con Cita
  #34  
Antiguo 27-01-2009
NashvilleX NashvilleX is offline
Registrado
 
Registrado: ene 2009
Posts: 1
Poder: 0
NashvilleX Va por buen camino
Talking

Cita:
Empezado por roman Ver Mensaje
Es muy sencillo. Creas la plantilla .dot en Word usando campos de tipo DocVariable (menú Insertar|Campo). A cada campo le asignas un nombre al momento de insertarlo. El documento .dot te quedaría más o menos así:


Señor
{ DOCVARIABLE nombre\* MERGEFORMAT }
{ DOCVARIABLE direccion\* MERGEFORMAT }

Estimado, le comunicamos que con fecha { DOCVARIABLE fecha\* MERGEFORMAT }, usted tiene una deuda de { DOCVARIABLE deuda\* MERGEFORMAT }, le rogamos regularizar su situacion.

Atentamen el cobrador

Conviene que actives la visualización de campos en el menú Herramientas|Opciones|Ver.

En Delphi, puedes llenar la plantilla así:

Código Delphi [-]

uses ComObj;

...

var
Word: Variant;
Documento: Variant;

begin
(* Creas un objeto Word *)
Word := CreateOleObject('Word.Application');

(* Añades un documento basado en la plantilla *)
Word.Documents.Add('carta.dot');
Documento := Word.Documents.Item(1);

(* Asignas valores a los campos *)
Documento.Variables.Add('nombre', 'pepe pérez');
Documento.Variables.Add('direccion', 'domicilio conocido');
Documento.Variables.Add('fecha', '1976-02-29');
Documento.Variables.Add('deuda', '$1.00 m.n');
end;


Claro está que los valores que asignes a los campos los puedes tomar de una consulta a la base de datos o de cualquier otra fuente.

// Saludos

Agradezco mucho la ayuda. Menos mal que encontré este hilo para enterarme del método que enseñas.

Gracias
Responder Con Cita
  #35  
Antiguo 12-03-2009
siriana siriana is offline
Registrado
 
Registrado: may 2008
Posts: 9
Poder: 0
siriana Va por buen camino
Unhappy insertar datos de builder a word

hola yo estoy trabajndo en c++ builder 6.0 y me maraca unos errores por que algunas propiedades no perteneces a ese tipo de builder, si me pudieran ayudar a sustitiur le codigo para c++ builder 6.0 estaria muy agradecida.ç
Responder Con Cita
  #36  
Antiguo 18-04-2010
alekhine alekhine is offline
Registrado
 
Registrado: feb 2008
Posts: 1
Poder: 0
alekhine Va por buen camino
Funciona 100%

Gracias hermano, esto ya lo estaba buscando hace algun tiempo y esta es la mejor respuesta, a mi me funcionó a la peerfección.
Ahora la inquietud del otro pana es buena, como guardar el documento de una forma transparente para el usuario (automático)....
Gracias
Responder Con Cita
  #37  
Antiguo 30-11-2010
axel07_89 axel07_89 is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 1
Poder: 0
axel07_89 Va por buen camino
DocVariable desde Memo en delphi 7

Ayuda!! Tengo un docVariable en una plantilla, extraigo los datos desde un memo en delphi 7, el detalle esta en que muestra un símbolo en lugar de dar un salto de linea.
Responder Con Cita
  #38  
Antiguo 30-11-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola axel07_89, bienvenido a clubdelphi, por favor, lee nuestra guía de estilo para que podamos entendernos mejor, muchas gracias.
Responder Con Cita
  #39  
Antiguo 30-04-2015
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
Y para insertar una imagen, la cual o bien la tengo en una variable longblob o su direccion algo como "c:\archivo\dibujo.jpg"

Gracias
Responder Con Cita
  #40  
Antiguo 30-04-2015
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.408
Poder: 22
fjcg02 Va camino a la fama
Prueba esto

Código Delphi [-]
Archivo = 'c:\imagen.png'
rango = wordtable.Cell( i,j).Range;
word.selection.inlinesshapes.addpicture(archivo, emptyparam, emptyparam, rango


Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por fjcg02 fecha: 30-04-2015 a las 15:28:39. Razón: corregir ortografía
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Insertar filas en Tabla(word) Loviedo Servers 2 14-11-2007 01:12:40
Automatizacion de word (insertar tablas) alt126 C++ Builder 2 04-11-2005 11:44:29
Insertar objetos en Word ingel Varios 0 18-05-2005 23:42:12
Cómo insertar un salto de página a word desde delphi? nacho Servers 3 08-03-2005 22:02:16
Insertar Imagenes desde Delphi a un Documento Word ludan508 Servers 1 21-09-2004 02:07:02


La franja horaria es GMT +2. Ahora son las 11:00:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi