Clase TWord
Clase TWord
He bajado el PRG de la clase Tword pero no localizo los ejemplos ni la ayuda de la misma.
Me pueden decir donde encontrarlo.
Un saludo.
Me pueden decir donde encontrarlo.
Un saludo.
Saludos. Fernando
- Manuel Aranda
- Posts: 605
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Hola Fernando:
Te pongo un trozo de código que, espero, te ayudará:
Como puedes observar los campos que van en el documento se encierran entre corchetes, aunque puedes utiliza cualquier otro símbolo.
Te pongo un trozo de código que, espero, te ayudará:
Code: Select all | Expand
................
oWord := Tword():New()
oWord:OpenDoc(cRutaDoc)
//
IF lPreWord
oWord:Visualizar()
ENDIF
//
oWord:Replace("[TRATAMIENTO]",cTratami)
oWord:Replace("[NUMEROSOCIO]",cNumSocio)
oWord:Replace("[NOMBRE]",cNombre)
oWord:Replace("[DOMICILIO]",cDomicilio)
oWord:Replace("[CPOSTALYLOCALIDAD]",cCLP)
//
IF lPreWord
oWord:Visualizar()
ENDIF
//
oWord:PrintDoc()
oWord:End(.F.)
.............
Como puedes observar los campos que van en el documento se encierran entre corchetes, aunque puedes utiliza cualquier otro símbolo.
Un saludo,
Manuel
xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Manuel
xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Manuel Aranda wrote:Hola Fernando:
Te pongo un trozo de código que, espero, te ayudará:Code: Select all | Expand
................
oWord := Tword():New()
oWord:OpenDoc(cRutaDoc)
//
IF lPreWord
oWord:Visualizar()
ENDIF
//
oWord:Replace("[TRATAMIENTO]",cTratami)
oWord:Replace("[NUMEROSOCIO]",cNumSocio)
oWord:Replace("[NOMBRE]",cNombre)
oWord:Replace("[DOMICILIO]",cDomicilio)
oWord:Replace("[CPOSTALYLOCALIDAD]",cCLP)
//
IF lPreWord
oWord:Visualizar()
ENDIF
//
oWord:PrintDoc()
oWord:End(.F.)
.............
Como puedes observar los campos que van en el documento se encierran entre corchetes, aunque puedes utiliza cualquier otro símbolo.
Gracias Manuel.
El código ya lo tenía de un problema que tenías tu. La duda era´sobre el documento de word que utilizaré como primario para combinar. Entiendo que puedo colocar cualquier llamada, ya que será lo que se invoque con Replace.
Un saludo. Fernando
Saludos. Fernando
- Ramon Paredes
- Posts: 215
- Joined: Fri Feb 02, 2007 3:38 pm
- Location: Managua, Nicaragua
asi uso tword
Fernando, el codigo a continuacion es como imprimo desde un sistema constancias salariales, tengo un documento primario en word creado preliminarmente dejando entre corchetes los campos a reemplazar y desde ahi lo tomo como plantilla ,
local oWord,oFont1,oFont2,mdoc
local afondo := {nRGB(255,0,0), nRGB(255,255,255), ,2,4}
local alinea := {5},mTexto,mTexto1,mTexto2,mTexto3,mTexto4,mTexto5,otxt,otxt1
local oTxt2,oTxt3,cMes1,cNommes
mTexto := "("+CONVERTIR(mSaldo1,"Cordobas")+")"
mTexto1 := "("+CONVERTIR(mDesde,"Cordobas")+")"
mTexto2 := "("+CONVERTIR(mHasta,"Cordobas")+")"
cMes1 := date()
cNommes := FAN(@cMes1,cNommes)
oWord:= Tword():New
DEFINE FONT oFont1 NAME "Arial" SIZE 0,-12 BOLD ITALIC UNDERLINE of oWord
DEFINE FONT oFont2 NAME "Tahoma" SIZE 0,-12 ITALIC of oWord
/*
este esl documento primario donde tengo entre corchetes los campos a reemplazar */
oWord:OpenDoc("C:\DATA1\SALARIO1.DOC")
oWord:SetCm()
oWord:Replace([Nombre1],mCodigo+"-"+mNombre)
oWord:replace([Fing],mCarrera)
oWord:replace([Mcargo],mCargo)
oWord:replace([Msalario],mSaldo)
oWord:replace([Mletras],mTexto)
oWord:replace([Mdesde],mDesde)
oWord:replace([Mletra1],mTexto1)
oWord:replace([Mhasta],mHasta)
oWord:replace([Mletra2],mTexto2)
oWord:replace([Mfecha],cNommes)
//oWord:Preview()
/*
Despues del reemplazo de los campor salvo mi documento con otro nombre y mi plantilla queda sin alteraciones
*/
oWord:Save("PRUEBA.DOC")
oWord:PrintDoc(,,,,,,,,,) // imprimo el documento sin o con vista previa
oWord:End()
oFont1:End()
RETURN NIL
Ojala te sea de alguna utilidad
Saludes desde Managua, Nicaragua
Ramon Paredes
local oWord,oFont1,oFont2,mdoc
local afondo := {nRGB(255,0,0), nRGB(255,255,255), ,2,4}
local alinea := {5},mTexto,mTexto1,mTexto2,mTexto3,mTexto4,mTexto5,otxt,otxt1
local oTxt2,oTxt3,cMes1,cNommes
mTexto := "("+CONVERTIR(mSaldo1,"Cordobas")+")"
mTexto1 := "("+CONVERTIR(mDesde,"Cordobas")+")"
mTexto2 := "("+CONVERTIR(mHasta,"Cordobas")+")"
cMes1 := date()
cNommes := FAN(@cMes1,cNommes)
oWord:= Tword():New
DEFINE FONT oFont1 NAME "Arial" SIZE 0,-12 BOLD ITALIC UNDERLINE of oWord
DEFINE FONT oFont2 NAME "Tahoma" SIZE 0,-12 ITALIC of oWord
/*
este esl documento primario donde tengo entre corchetes los campos a reemplazar */
oWord:OpenDoc("C:\DATA1\SALARIO1.DOC")
oWord:SetCm()
oWord:Replace([Nombre1],mCodigo+"-"+mNombre)
oWord:replace([Fing],mCarrera)
oWord:replace([Mcargo],mCargo)
oWord:replace([Msalario],mSaldo)
oWord:replace([Mletras],mTexto)
oWord:replace([Mdesde],mDesde)
oWord:replace([Mletra1],mTexto1)
oWord:replace([Mhasta],mHasta)
oWord:replace([Mletra2],mTexto2)
oWord:replace([Mfecha],cNommes)
//oWord:Preview()
/*
Despues del reemplazo de los campor salvo mi documento con otro nombre y mi plantilla queda sin alteraciones
*/
oWord:Save("PRUEBA.DOC")
oWord:PrintDoc(,,,,,,,,,) // imprimo el documento sin o con vista previa
oWord:End()
oFont1:End()
RETURN NIL
Ojala te sea de alguna utilidad
Saludes desde Managua, Nicaragua
Ramon Paredes
... Desde la Tierra de lagos y Volcanes......
Buenas tardes.
Tras realizar un pequeño ejemplo, en tiempo de ejecución tengo un error.
Application
===========
Path and name: d:\personal\perito32\perito3.Exe (32 bits)
Size: 667,648 bytes
Time from start: 0 hours 0 mins 45 secs
Error occurred at: 07-11-2008, 20:01:47
Error description: Error BASE/1004 No existe el m‚todo: GET
Args:
[ 1] = U
[ 2] = C MailMerge
Stack Calls
===========
Called from: source\rtl\tget.prg => GET(0)
Called from: => TWORD:OPENDOC(434)
Called from: d:\personal\perito32\Prg\facturas.prg => IMPRIME_FACTURA(269)
Called from: d:\personal\perito32\Prg\verfactura.prg => VERFACTURA(200)
Called from: d:\personal\perito32\Prg\facturas.prg => (b)FACTURA(72)
Called from: => TBUTTON:CLICK(0)
Called from: => TBUTTON:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => SENDMESSAGE(0)
Called from: => TDIALOG:COMMAND(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: => TDIALOG:HANDLEEVENT(0)
Called from: => DIALOGBOXINDIRECT(0)
Called from: => TDIALOG:ACTIVATE(0)
Called from: d:\personal\perito32\Prg\facturas.prg => FACTURA(81)
Called from: d:\personal\perito32\Prg\perito32.prg => (b)BUILDMENU(117)
Called from: => TMENU:COMMAND(0)
Called from: => TWINDOW:COMMAND(0)
Called from: => TMDIFRAME:COMMAND(0)
Called from: => TMDIFRAME:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: => TMDIFRAME:ACTIVATE(0)
Called from: d:\personal\perito32\Prg\perito32.prg => MAIN(96)
Me imagino que debe ser un problema de enlazado, ya que he compilado y enlazado directamente el archivo Tword.prg.
Una ayuda, por favor.
Saludos
Tras realizar un pequeño ejemplo, en tiempo de ejecución tengo un error.
Application
===========
Path and name: d:\personal\perito32\perito3.Exe (32 bits)
Size: 667,648 bytes
Time from start: 0 hours 0 mins 45 secs
Error occurred at: 07-11-2008, 20:01:47
Error description: Error BASE/1004 No existe el m‚todo: GET
Args:
[ 1] = U
[ 2] = C MailMerge
Stack Calls
===========
Called from: source\rtl\tget.prg => GET(0)
Called from: => TWORD:OPENDOC(434)
Called from: d:\personal\perito32\Prg\facturas.prg => IMPRIME_FACTURA(269)
Called from: d:\personal\perito32\Prg\verfactura.prg => VERFACTURA(200)
Called from: d:\personal\perito32\Prg\facturas.prg => (b)FACTURA(72)
Called from: => TBUTTON:CLICK(0)
Called from: => TBUTTON:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => SENDMESSAGE(0)
Called from: => TDIALOG:COMMAND(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: => TDIALOG:HANDLEEVENT(0)
Called from: => DIALOGBOXINDIRECT(0)
Called from: => TDIALOG:ACTIVATE(0)
Called from: d:\personal\perito32\Prg\facturas.prg => FACTURA(81)
Called from: d:\personal\perito32\Prg\perito32.prg => (b)BUILDMENU(117)
Called from: => TMENU:COMMAND(0)
Called from: => TWINDOW:COMMAND(0)
Called from: => TMDIFRAME:COMMAND(0)
Called from: => TMDIFRAME:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: => TMDIFRAME:ACTIVATE(0)
Called from: d:\personal\perito32\Prg\perito32.prg => MAIN(96)
Me imagino que debe ser un problema de enlazado, ya que he compilado y enlazado directamente el archivo Tword.prg.
Una ayuda, por favor.
Saludos
Saludos. Fernando
- Ramon Paredes
- Posts: 215
- Joined: Fri Feb 02, 2007 3:38 pm
- Location: Managua, Nicaragua
un trozo de codigo
Fernando,
Si pusieses un trozo de codigo donde se origina el error te podriamos echar una mano,
Saludes desde Managua, Nicaragua
Ramon Paredes
Si pusieses un trozo de codigo donde se origina el error te podriamos echar una mano,
Saludes desde Managua, Nicaragua
Ramon Paredes
... Desde la Tierra de lagos y Volcanes......
Re: un trozo de codigo
Ramon Paredes wrote:Fernando,
Si pusieses un trozo de codigo donde se origina el error te podriamos echar una mano,
Saludes desde Managua, Nicaragua
Ramon Paredes
Muchas gracias por responder Ramón.
Como verás el código no puede ser mas simple. Creo, por lo que he leido en los foros, que para crear la librería Tword se debe enlazar la librería de Harbour hbwin32 ya que se precisa la clase Toleauto. He intentado localizarla pero no le he conseguido.
Como ya indicaba, utilizo directamente el código Twordhb.PRG, que compilo y enlazo con el resto de los PRG,s de la aplicación.
Un saludo Desde Zaragoza (España).
Saludos. Fernando
Perdona Ramón por no incluir el código. Ahí va:
Function Imprime_Factura(aDatos)
LOCAL oWord
oWord:=Tword():New()
oWord:OpenDoc("c:\Usuarios\Fernando\Documentos\Facturas CEFER.DOC")
oWord:Replace("[fecha]", aDatos[6])
oWord:Replace("[factura]",aDatos[5])
oWord:Preview()
oWord:End(.F.)
Return(aDatos)
Como verás se trata de una prueba sencilla. Como ya indicaba creo que l problema es el enlazado ya que me temo que me falta incluir un libreria de harbour.
Ya me contarán.
Un saludo.
Function Imprime_Factura(aDatos)
LOCAL oWord
oWord:=Tword():New()
oWord:OpenDoc("c:\Usuarios\Fernando\Documentos\Facturas CEFER.DOC")
oWord:Replace("[fecha]", aDatos[6])
oWord:Replace("[factura]",aDatos[5])
oWord:Preview()
oWord:End(.F.)
Return(aDatos)
Como verás se trata de una prueba sencilla. Como ya indicaba creo que l problema es el enlazado ya que me temo que me falta incluir un libreria de harbour.
Ya me contarán.
Un saludo.
Saludos. Fernando
-
- Posts: 325
- Joined: Sun Feb 03, 2008 11:04 pm
- Location: Argetnina
dobfivewin wrote:Se solucionó el tema que esta clase (word) que funcione tanto para Word 2003 como para el 2007,
Salen tabulado de distinta forma de una versión a la otra.
gracias
David
argentina
David no entiendo qué me quierres decir, ya que no me funciona de ninguna forma, me da error antes de abrir el documento.
Un saludo.
Saludos. Fernando
-
- Posts: 325
- Joined: Sun Feb 03, 2008 11:04 pm
- Location: Argetnina
Disculpas, pensé que ya habias solucionado. Te voy a pasar como lo manejo yo, y que está funcionando.
El problema que tengo que mi aplicación cuando GENERA el documento sale tabulado de distinta forma, en la maquina que se ejecuta el programa, si tengo Ofiice 2003 y 2007.
DE ESTA FORMA YO GENERO EL DOCUMENTO DESDE MI APLICACION
DE ESTA FORMA LO HABRO
DE ESTA FORMA LO IMPRIMO
La variable cOutFile debes colocar el nombre del archivo: PEPE.doc
espero que te sea util
un abrazo
david
argentina
El problema que tengo que mi aplicación cuando GENERA el documento sale tabulado de distinta forma, en la maquina que se ejecuta el programa, si tengo Ofiice 2003 y 2007.
DE ESTA FORMA YO GENERO EL DOCUMENTO DESDE MI APLICACION
Code: Select all | Expand
oWord:=Tword():New()
oWord:NewDoc( cOutFile )
oWord:startpage()
oWord:SetCm()
oWord:TextBox(1 ,;
2.0 ,;
25 ,;
20.3 ,;
'PRUEBA GENERACION DE DOCUMENTO WORD,;
oFuente5, , , Justi, ,{0},.t.)
oWord:EndPage()
oWord:Protect('clave') // para proteger el Documento
oWord:save()
oWord:End()
DE ESTA FORMA LO HABRO
Code: Select all | Expand
oWord:=Tword():New()
oWord:OpenDoc(cOutFile) // con todo y path
oWord:Preview()
DE ESTA FORMA LO IMPRIMO
Code: Select all | Expand
oWord:=Tword():New()
oWord:OpenDoc(cOutFile) // con todo y path
oWord:PrintDoc()
La variable cOutFile debes colocar el nombre del archivo: PEPE.doc
espero que te sea util
un abrazo
david
argentina
Gracias David.
Como verás así abro el documento y así intento hacerlo.
OpenDoc() me genera un error ya que me dice que no existe el método GET. Si nos vamos al método OpenDoc, vemos que en efecto ahí está el problema. Por eso pregunto si se debe enlazar alguan librería que no tengo en mi fichero RMK o cuano enlazo con VerCe.
Muchas gracias y un saludo
Como verás así abro el documento y así intento hacerlo.
OpenDoc() me genera un error ya que me dice que no existe el método GET. Si nos vamos al método OpenDoc, vemos que en efecto ahí está el problema. Por eso pregunto si se debe enlazar alguan librería que no tengo en mi fichero RMK o cuano enlazo con VerCe.
Muchas gracias y un saludo
Saludos. Fernando