FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Clase Tword
Posts: 215
Joined: Fri Feb 02, 2007 03:38 PM
Clase Tword
Posted: Mon May 11, 2009 02:48 PM

Hola amigos del Foro,

Tengo una aplicacion que emite un contrato de servicios para ello utilizo una plantilla de word y reemplazo los campos desde codigo pero el problema a que me enfrento es que cada vez que se ejecuta la accion de apertura de plantilla el word me la abre en modo de solo lectura y espera confirmacion del usuario y lo que es logico el programa se cuelga hasta que desde el administrador de tareas le indico que abra un copia de solo lectura y se ejecuta lo demas sin problemas, dentro del codigo al final lo salvo con otro nombre, no se que me falta para evitar esto, el codigo es el siguiente :

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

oWord:OpenDoc("C:\SISTEMAS\MONGALO2\CONTRATO.DOC")
oWord:SetMainDoc()
oWord:SetCm()

mNombre := ALLTRIM(E->SUSCRIBE)
mCedula := ALLTRIM(E->CEDULA)
mEmpresa := ALLTRIM(E->Nom_Cli)
mUbica1 := ALLTRIM(E->UBICA1)+" "+ALLTRIM(E->UBICA2)+" "+ALLTRIM(E->DESCRIP)
MPLAZO3 := E->PLAZO
mPlazo := E->PLAZO
mFecha := DTOC(E->FEC_INI)
mFecha1 := DTOC(E->FEC_FIN)
// mFecha3 := E->FEC_INI
// mFecha4 := E->FEC_FIN

MMONTO3 := E->MONTO
mPrecio := TRANSFORM(E->MONTO,"999,999.99")
mdetpla := CONVERTIR(MPLAZO3,"Meses ")
mPrecio2 := "("+CONVERTIR(MMONTO3,"Dólares ")+")"
mEcivil := E->E_CIVIL

SYSREFRESH()

oWord:Replace([xNombre],mNombre)
oWord:Replace([xEcivil],mEcivil)
oWord:Replace([xCedula],mCedula)
oWord:Replace([xEmpresa],mEmpresa)
oWord:Replace([xUbica1],mUbica1)
oWord:Replace([xPlazo],mPlazo)
oWord:Replace([xDetplazo],mdetpla)
oWord:Replace([xFecha],mFecha)
oWord:Replace([xFec],mFecha1)
oWord:Replace([xPrecMes],mPrecio)
oWord:Replace([xPrec],mPrecio2)
oWord:GoTop()
oWord:Replace("["," ")
oWord:Replace("]"," ")

oWord:Save("C:\DATA1\PRUEBA.DOC")
oWord:Preview()

oWord:PrintDoc(,,,,,,,,,)

oFont1:End()
oFont2:End()

CLOSE LISTA1

SELECT A

RETURN NIL

agradeceria de sobremanera cualquier ayuda al respecto

Saludos desde Managua, Nicaragua

Ramon Paredes

... Desde la Tierra de lagos y Volcanes......
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: Clase Tword
Posted: Mon May 11, 2009 03:41 PM

Que tal un oWord:End(.F.) después de oFont2:End().

Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 215
Joined: Fri Feb 02, 2007 03:38 PM
Re: Clase Tword
Posted: Mon May 11, 2009 05:58 PM

Gracias Manuel por contestar probare tu propuesta y te comento que paso,

Saludos

Ramon Paredes

... Desde la Tierra de lagos y Volcanes......
Posts: 215
Joined: Fri Feb 02, 2007 03:38 PM
Re: Clase Tword
Posted: Mon May 11, 2009 09:29 PM

Manuel,

esa opcion funciona bien para cerrar word sin problemas pero lo que yo necesito es abrir el documento plantilla y que no me apaarezca el tipico mensaje de word de este documento ha sido bloqueado por el usuario x para edicion Abrir una copia como solo lectura ? y logico el sistema se cuelga esperando la repuesta de word entonces hay que abrir el administrador de tareas donde sale el documento como archivo en uso y darle que abra como copia de solo lectura y el sistema continua, ese es el problema que tengo, como abrir la plantilla de otra forma que no me la bloquee el word para edicion ?

Gracias de antemano al que me pueda ayudar,

Saludos

Ramon Paredes

... Desde la Tierra de lagos y Volcanes......
Posts: 326
Joined: Sun Oct 09, 2005 05:22 PM
Re: Clase Tword
Posted: Tue May 12, 2009 02:54 AM
Uso esto y funciona, espero a ti tambien:

Code (fw): Select all Collapse
   oWord:=TWord():New()
   IF oWord:IsVisible()
      oWord:Hide()
   ENDIF
   oWord:OpenDoc(cPlan)
   CursorWait()
   oWord:Replace("[Fecha]",cDate)
   ...
   nPos:=oWord:Find("<Tabla>")
   oWord:AddTables(aTab,nPos)
   oWord:Save(cFile)
   oWord:EditDoc()
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: Clase Tword
Posted: Tue May 12, 2009 06:21 AM
Hola Ramón:

Así es mo lo hago yo y no temgo problema alguno:
Code (fw): Select all Collapse
      oWord := Tword():New()
      oWord:OpenDoc(cRutaDoc)
      //
      oWord:Replace("[NOMBRE]",cNombre)
      oWord:Replace("[DOMICILIO]",cDomicilio)
      //
      IF lPreWord
         oWord:Visualizar()
      ENDIF
      //
      oWord:PrintDoc()
      oWord:End(.F.)
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 215
Joined: Fri Feb 02, 2007 03:38 PM
Re: Clase Tword
Posted: Wed May 13, 2009 03:23 AM

Gracias Alfredo y Manuel,

Probare ambas opciones a ver que sucede, les comentare los resultados,

Nuevamente agradecido por su atencion

Ramon Paredes

... Desde la Tierra de lagos y Volcanes......

Continue the discussion