FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Documentos Word Buscar y reemplazar
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Documentos Word Buscar y reemplazar
Posted: Fri Dec 15, 2017 04:08 AM

Saludos Cordiales
Tengo la necesidad de leer documentos en formato word, buscar textos y reemplazarlos (para contratos).
Agradecido por sus recomendaciones.

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Documentos Word Buscar y reemplazar
Posted: Fri Dec 15, 2017 05:27 AM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Documentos Word Buscar y reemplazar
Posted: Fri Dec 15, 2017 05:27 AM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Documentos Word Buscar y reemplazar
Posted: Sat Dec 16, 2017 01: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... :-)

Code (fw): Select all Collapse
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
* <!-- m --><a class="postlink" href="https://msdn.microsoft.com/es-es/library/b9f0ke7y.aspx">https://msdn.microsoft.com/es-es/library/b9f0ke7y.aspx</a><!-- m -->

*   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!

Continue the discussion