Documentos Word Buscar y reemplazar
Posted:
Fri Dec 15, 2017 4:08 am
by jnavas
Saludos Cordiales
Tengo la necesidad de leer documentos en formato word, buscar textos y reemplazarlos (para contratos).
Agradecido por sus recomendaciones.
Re: Documentos Word Buscar y reemplazar
Posted:
Sat Dec 16, 2017 1:44 am
by joseluisysturiz
Asi me funciona para contratos...deberas crear en el documento word formato RTF colocar las palabras a cambiar entre corchetes [palabra], saludos...gracias...
- 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