Amigos
Muy buen dia.
Amigos, Necesito si alguien dispone de la Clase Tword, que funciones con WIndows 10, que me la pueda compartir por favor.
Muchos Saludos.
Antonio
Amigos
Muy buen dia.
Amigos, Necesito si alguien dispone de la Clase Tword, que funciones con WIndows 10, que me la pueda compartir por favor.
Muchos Saludos.
Antonio
Antonio.
Creo que en el post siguiente encontrarás respuesta a lo que necesitas, sin usar la Class TWord.
Lo he probado, y funciona. (Win7,FW1204) Gracias Cesar.
viewtopic.php?f=6t=34862start=0hilit=word+mergesid=97b3d94ae56594b9de3c7845752eef49#p207274
Saludos.
&&&&
Hola Francisco
Muchas gracias por tu ayuda, como siempre atento a los que necesitamos ayuda.
Revisare lo que me sugieres.
Muchos Saludos.
Antonio
Amigos
Definitivamente lo que tengo que entregar como resultado es Tomar un Archivo Plantilla, Ejemplo "Altura.DOC", reemplazar algunos datos como Nombre, Rut, Direccion y otros, crear un nuevo archivo y guardarlo con el Nro. de Ficha como Nombre, Ejemplo " C65600.DOC " , ademas de imprimir directamente.
He revisado lo que me indica Francisco, pero me perdi, ya que se habla de archivo RTF.
En espera de sus comentarios.
Muchos Saludos.
Antonio.
Numero RUT <<RUT>> // puedes encerrarlos entre [ ], < >, << >>, o como quieras
Nombre <<NOMBRE>>
Pais <<PAIS>>Function ReplTextOnWord_2()
LOCAL cText, oWord, oDoc
local cDocPath := CurDrive() + ":\" + curdir() + "\"
local cDoc := "DocuDos.rtf"
local cDocSaveAs := "DocuDos_TMP.rtf"
if !file( cDocPath + cDoc )
MsgStop("No existe el fichero de plantilla " + cDocPath + cDoc,"Alto")
return nil
endif
if (oWord := WinWordObj() ) == nil
MsgStop( "MS Word no instalado" ,"Alto" )
return nil
endif
cText := MemoRead( cDocPath + cDoc )
ReplaceText(@cText)
MemoWrit( cDocPath + cDocSaveAs, cText )
oDoc = oWord:Documents:Open( cDocPath + cDocSaveAs)
if oDoc == nil
MsgInfo("Error de creación del documento " +cDocSaveAs +". Asegúrese que no esté abierto." )
endif
oDoc:Application:Visible := .t.
Return nil
//------------------------------------------------------//
static function ReplaceText(cText)
cText := StrTran(ctext,"<<RUT>>" , Alltrim(" 12345678910 ") )
cText := StrTran(ctext,"<<NOMBRE>>" , Alltrim(" DONALDO TROMPETA ") )
cText := StrTran(ctext,"<<PAIS>>" , Alltrim(" PAIS DE LAS MARAVILLAS ") )
//Para reemplazar con datos de una DBF, puedes hacer:
//cText := StrTran(ctext,"<<NOMBRE>>" , Alltrim ( (cAlias)->Nombre) )
//etc, etc...
return nilAqui tienes otro ejemplo que funciona:
http://forums.fivetechsupport.com/viewt ... 10#p191277
saludos.
Function G_Altura_W()
Local cTxtFile, oWord, oSel, oDoc,cOrigen,cDestino,cFile,cSave
cOrigen:= "C:\Desa\FichasWin\Doc\Doc_Bases\"
cDestino:="C:\Desa\FichasWin\Doc\Doc_Bases\"
cFile:= "Alturapru6.rtf"
cSave:= "Alturapru11.doc"
Nom1=" PACIENTE DE PRUEBA INFORME"
rut1=" 11.111.111-1"
naci1="Chilena"
oWord:=TOleAuto():New( "Word.Application" )
TRY
oDoc := oWord:Documents:Open(cOrigen + cFile)
CATCH
MsgInfo("Error: No Puedo Abrir Archivo Plantilla --> "+cFile)
oWord:Quit()
Return NIL
END
oDoc:Select()
oSel = oWord:Selection
Reemplaza_Text( oSel, "[nombrepaciente]",AllTrim(Nom1))
Reemplaza_Text( oSel, "[rut]",AllTrim(rut1))
Reemplaza_Text( oSel, "[naciona]",AllTrim(naci1))
oDoc:Invoke( "SaveAs", cDestino + cSave )
//oWord:= .T.//;oWnd:Minimize()
//oDoc:PrintOut()
oDoc:Invoke('Close',0)
oWord:Quit()
Return
Static Function Reemplaza_Text( oSel, cSrc, cRpl)
oSel:Start = 0
oSel:End = -1
WHILE oSel:Execute( cSrc )
oSel:Text = cRpl
ENDDO
Return nil//---------------------------------------------------//
Function G_Altura_W()
Local oWord, oSel, oDoc,cOrigen,cDestino,cFile,cSave, Nom1,rut1,naci1
local oActiveDoc,aArrReplace, n
cOrigen := "C:\Desa\FichasWin\Doc\Doc_Bases\"
cDestino := "C:\Desa\FichasWin\Doc\Doc_Bases\"
cFile := "Alturapru6.rtf"
cSave := "Alturapru11.doc"
Nom1 := "PACIENTE DE PRUEBA INFORME"
rut1 := "11.111.111-1"
naci1 := "Chilena"
TRY
oWord := CreateObject("Word.Application")
CATCH
MsgInfo("Word no está instalado en esta PC. No se puede continuar")
Return NIL
END
TRY
oDoc := oWord:Documents:Open(cOrigen + cFile)
CATCH
MsgInfo("No se puede abrir el archivo plantilla " + cOrigen + cFile)
oWord:Quit()
Return NIL
END
oWord:=.T.
oDoc:Select()
oSel = oWord:Selection
// Crear Matriz de reemplazos
aArrReplace := { { "[nombrepaciente]", AllTrim(Nom1) } ,;
{ "[rut]" , AllTrim(rut1) } ,;
{ "[naciona]" , AllTrim(naci1) } }
For n:=1 to Len(aArrReplace)
Reemplaza_Text( oSel, aArrReplace[n][1], aArrReplace[n][2] )
Next n
oActiveDoc := oWord:Get("ActiveDocument")
oActiveDoc:SaveAs(cDestino + cSave)
* oActiveDoc:PrintOut()
* oWord:Documents:Close()
* oWord:Quit()
SysRefresh()
Return nil
//---------------------------------------------------//
Static Function Reemplaza_Text( oSel, cSrc, cRpl)
oSel:Start = 0
oSel:End = -1
WHILE oSel:Execute( cSrc )
oSel:Text = cRpl
ENDDO
Return nil//---------------------------------------------------//
Static Function Reemplaza_Text( oSel, cSrc, cRpl)
Local wdCollapseEnd:=0
LOCAL oRng := oSel:Document:Content
IF AT( cSrc, oRng:Text ) = 0
RETURN .F.
ENDIF
WHILE oRng:Find:Execute( cSrc )
oRng:Text = cRpl
oRng:Collapse( wdCollapseEnd )
ENDDO
RETURN .T.Estimado
Yo utilizo fastresport creo una plantilla y luego exporto los campos a la plantilla. es muy simple rapido y sencillo. Dame un email y te explico este fin de semana y en menos de 10 munutios podras hacerlo que deseas.
Hola Francisco y Busmatic_wpb.
Muy buen, Muchas gracias por ayudarme, como siempre atento a los que lo necesitamos.
Francisco, he probado ambos codigos, tal como los has publicado y se produce el mismo problema, la ejecucion del sistema que ademas tiene solo este codigo, termina por bloquear el equipo, sin dar la posibilidad de cerrar su ejecucion por sistema, debiendo recurrir a terminan forzadamente por windows. Quizas sea un problema de windows 10, pero el clientes es la configuracion que dispone en sus equipos.
He probado en otro notebook nuevo con windows 10 de 64 bits y sucede lo mismo, teniendo office instalado en la version nueva, en un Lenovo i 7, con 8gb Ram.
Busmatic_wpb, disculpa que te mencione asi, ya que no encuentro tu nombre, abusando de tu buena voluntad, te dejo 2 email, don me puedes contactar:
riveraferrada@gmail.com - centrobuin@gmail.com.
Agradeciendo nuevamente la ayuda de ambos, quedo atento a sus comentarios.
Muchos Saludos
Antonio
Function G_Francisco2()
Local oWord, oSel, oDoc,cOrigen,cDestino,cFile,cSave, Nom1,rut1,naci1
local oActiveDoc,aArrReplace, n
cOrigen := "C:\Desa\FichasWin\Doc\Doc_Bases\"
cDestino := "C:\Desa\FichasWin\Doc\Doc_Bases\"
cFile := "Alturapru6.rtf"
cSave := "Alturapru12.doc"
Nom1 := "PACIENTE DE PRUEBA INFORME"
rut1 := "11.111.111-1"
naci1 := "Chilena"
TRY
oWord := CreateObject("Word.Application")
CATCH
MsgInfo("Word no está instalado en esta PC. No se puede continuar")
Return NIL
END
TRY
oDoc := oWord:Documents:Open(cOrigen + cFile)
CATCH
MsgInfo("No se puede abrir el archivo plantilla " + cOrigen + cFile)
oWord:Quit()
Return NIL
END
oWord:=.T.
oDoc:Select()
oSel = oWord:Selection
// Crear Matriz de reemplazos
aArrReplace := { { "[nombrepaciente]", AllTrim(Nom1) } ,;
{ "[rut]" , AllTrim(rut1) } ,;
{ "[naciona]" , AllTrim(naci1) } }
For n:=1 to Len(aArrReplace)
Reemplaza_Text_F2( oSel, aArrReplace[n][1], aArrReplace[n][2] )
Next n
oActiveDoc := oWord:Get("ActiveDocument")
oActiveDoc:SaveAs(cDestino + cSave)
oActiveDoc:PrintOut()
* oWord:Documents:Close()
* oWord:Quit()
SysRefresh()
Return nil
//---------------------------------------------------//
Static Function Reemplaza_Text_F2( oSel, cSrc, cRpl)
Local wdCollapseEnd:=0
LOCAL oRng := oSel:Content
IF AT( cSrc, oRng:Text ) = 0
RETURN .F.
ENDIF
WHILE oRng:Execute( cSrc )
oRng:Text = cRpl
oRng:Collapse( wdCollapseEnd )
ENDDO
RETURN .T.Antonio.
Has probado ejecutar el programa como administrador?. A lo mejor es un problema de permisos en Windows 10 64b
Click derecho sobre el icono del programa, ejecutar como administrador.
En algunos clientes me ha sucedido ( aunque sin bloqueo del equipo ), y ejecutando como administrador se ha solucionado.
En este momento voy hacia donde un amigo que tiene un ciber, a ver si tiene windows 10 64b y Office actual.
Saludos.
Hola Francisco
He probado tu ultima sugerencia e ejecutado el programa como administrador y nada, el mismo problema, no genera el archivo en el disco y bloquea la ejecucion de cualquier opcion del Programa. Debo terminar su ejecucion forzada por sistema.
El mismo programa en Windows XP y Office 2010, funciona perfecto.
Algun amigo que le haya sucedido algo parecido?.
Muchos Saludos
Antonio
Antonio.
Francamente es raro.
Acabo de probarlo en Windows 10 Home 64b y Office 2016 y funciona correctamente.
Talvez otros colegas hayan pasado por ese problema, y puedan aportar alguna solución.
Saludos.
Hola Francisco
Descubri que algo sucede con el archivo Plantilla RTF en Windows 10 y Office 365 en el caso del cliente. Como mente el mismo programa y RTF, en windows XP y Office 2010, funciona muy bien, pero en windows 10 esto no sucede.
Pues bien, he generado una nueva plantilla RTF, corro el mismo programa en windows 10 y funciona, pero el cabo de unas 15 ejecuciones, el programa no corre mas.
Para mi un verdadero problema y dolor de cabeza, para los maestros cual sera la explicacion?
Al tratar de abrir la plantilla directamente por Word, emite un error: " La ultima ves que se abrio Plantilla6.rtf, se provoco un error grave"
Muchos Saludos.
Antonio