Documentos Word Buscar y reemplazar

Documentos Word Buscar y reemplazar

Postby jnavas » Fri Dec 15, 2017 4:08 am

Saludos Cordiales
Tengo la necesidad de leer documentos en formato word, buscar textos y reemplazarlos (para contratos).
Agradecido por sus recomendaciones.
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Documentos Word Buscar y reemplazar

Postby Antonio Linares » Fri Dec 15, 2017 5:27 am

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41206
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Documentos Word Buscar y reemplazar

Postby Antonio Linares » Fri Dec 15, 2017 5:27 am

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41206
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Documentos Word Buscar y reemplazar

Postby joseluisysturiz » Sat Dec 16, 2017 1:44 am

Asi me funciona para contratos...deberas crear en el documento word formato RTF colocar las palabras a cambiar entre corchetes [palabra], saludos...gracias... :shock:

Code: Select all  Expand view

PROCEDURE word_prueba( oQryCtt ) // INICIALIZACION DE WORD Y DOCUMENTO A USAR

   LOCAL oWord, cViejo, cNuevo, oDoc

local cRuta := "\DOC\"

local cCtt2 := "
CONTRATO2.DAT"

local NOMBRES_APELLIDOS := AllTrim( oQryCtt:apellidos ) + "
" + AllTrim( oQryCtt:nombres ) ,;
      CUOTAS_NUMERO := oQryCtt:monto ,;
      CUOTAS_MONTO_LETRAS := Letras( CUOTAS_NUMERO, "
M" )

CUOTAS_NUMERO := Transform( CUOTAS_NUMERO, "
@E 99,999,999.99" )
//
   oWord := TOleAuto():New( "
Word.Application" )

   oWord:Documents:Open( cRuta + cCtt2 ) // ABRE DOCUMENTO

   oWord:Visible := .t. // MUESTRA EL WORD
   oWord:WindowState := 1 // Maximize

   oDoc := oWord:Selection() // ASIGNO DOCUMENTO A USAR

   oWord:Get( "
ActiveDocument" ) // ACTIVA DOCUMENTO ABIERTO

// REEMPLAZOS
   cViejo := "
[NOMBRES_APELLIDOS]"
   cNuevo := NOMBRES_APELLIDOS
   IF VALTYPE( cNuevo ) = "
C" // tipo caracter
      cNuevo := RTRIM ( cNuevo )
   ENDIF
   reemplace( oDoc, cViejo, cNuevo )

   ***

   cViejo := "
[CUOTAS_MONTO_LETRAS]"
   cNuevo := CUOTAS_MONTO_LETRAS
   IF VALTYPE( cNuevo ) = "
C"
      cNuevo := RTRIM ( cNuevo )
   ENDIF
   reemplace( oDoc, cViejo, cNuevo )

   ***

   cViejo := "
[CUOTAS_NUMERO]"
   cNuevo := CUOTAS_NUMERO
   IF VALTYPE( cNuevo ) = "
C"
      cNuevo := RTRIM ( cNuevo )
   ENDIF
   reemplace( oDoc, cViejo, cNuevo )

// FIN REEMPLAZOS

*   oWord:PrintPreview := .t. // MUESTRO DOC.IMPRESION PREVIA - 31/03/2017
*   oWord:PrintOut() // IMPRIMIR DOC.SIN PREVIEW - 31/03/2017
*ActiveWindow.View.Zoom = 100


// METODOS DE V.BASIC PARA USAR WORD
* https://msdn.microsoft.com/es-es/library/b9f0ke7y.aspx

*   cCtt2:Invoke( "
SaveAs", cFichero ) // graba fichero
*   cCtt2:Invoke('Close',0) // cierra fichero

RETURN

STATIC FUNCTION reemplace( oDoc, cViejo, cNuevo ) // PARA BUSCAR Y REEMPLAZAR LOS MACROS X VARIABLE

   LOCAL oSelection, oTexto, oFind
   //oSelection := oDoc ???
   //oTexto := oSelection:Range() ???
   //oTexto := oDoc:ActiveDocument:Range() ???

   oTexto := oDoc

   oFind := oTexto:Find
   oFind:Text := cViejo
   oFind:Forward :=.t.
   oFind:Wrap := INT(1)
   oFind:Format :=.f.
   oFind:MatchCase :=.f.
   oFind:Execute()

   WHILE oFind:Found
      oTexto:Text := cNuevo
      oFind:Execute()
   ENDDO

RETURN oTexto
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 8 guests