Saludos Cordiales
Tengo la necesidad de leer documentos en formato word, buscar textos y reemplazarlos (para contratos).
Agradecido por sus recomendaciones.
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
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 10 guests