Estoy utilizando desde hace tiempo Word, directamente con Ole, a plena satisfacción. En una función que tengo que REEMPLAZA código (mailmerge), quiero que al reescribir la variable, lo haga con un color distinto al actual del documento. He puesto lo siguiente, pero me da problemas:
oDoc:Invoke('Color', 255)
¿Alguna idea para solucionarlo?
Dudas con Word
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Dudas con Word
Un saludo
Manuel
Manuel
Re: Dudas con Word
ManuelManuel Valdenebro wrote:Estoy utilizando desde hace tiempo Word, directamente con Ole, a plena satisfacción. En una función que tengo que REEMPLAZA código (mailmerge), quiero que al reescribir la variable, lo haga con un color distinto al actual del documento. He puesto lo siguiente, pero me da problemas:
oDoc:Invoke('Color', 255)
¿Alguna idea para solucionarlo?
Aqui te dejo el código fuente del método que yo uso en la Clase TWord que hace lo mismo que tu estas haciendo.
Code: Select all
METHOD AddField( cField , nEnd , cFuente, nSize, lBold, lShadow, nColor ) CLASS TWord // Vikthor
LOCAL oRange := ::oSelection:Range()
LOCAL oFont
DEFAULT nEnd := oRange:Get("End")
oRange:SetRange( nEnd , nEnd )
oFont := oRange:Get("Font")
DEFAULT cFuente := "Tahoma" ,;
nSize := 10 ,;
lBold := .F. ,;
lShadow := .F. ,;
nColor := 0
oFont:Set( "Name", cFuente )
oFont:Set( "Size", nSize )
oFont:Set( "Bold", lBold )
oFont:Set( "Emboss", lShadow )
oFont:Set( "Color", nColor )
::oFields:Invoke("Add", oRange , cField )
oFont:Invoke( "Reset" )
RELEASE oFont , oRange
RETURN( Nil )
Vikthor
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Muchas gracias Vikthor por contestar.
He hecho algunas rectificaciones en mi módulo, de las conclusiones que he sacado de su Method, pero me sigue dando error. Algo estoy haciendo mal. Este es mi código:
¿Podrias ayudarme?
He hecho algunas rectificaciones en mi módulo, de las conclusiones que he sacado de su Method, pero me sigue dando error. Algo estoy haciendo mal. Este es mi código:
Code: Select all
STATIC FUNCTION REEMPLACE (oDoc, cViejo, cNuevo)
LOCAL oSelection, oTexto, oFind, oFont
oSelection := oDoc
oTexto := oSelection:Range
oFind := oTexto:Find
// oFont:Set("Color", RGB(255,255,255) ) // aqui da error
// oFont:Set("Bold", .t.) // aqui da error
oFind:Text:= cViejo
oFind:Forward:=.T.
oFind:Wrap:= INT(1)
oFind:Format:=.f.
oFind:MatchCase:=.f.
oFind:Execute()
// oFont:Invoke( "Reset" )
WHILE oFind:Found
oTexto:Text:=cNuevo
oFind:Execute()
Enddo
RETURN nil
Un saludo
Manuel
Manuel
Creo que te hace falta un :Manuel Valdenebro wrote:Muchas gracias Vikthor por contestar.
He hecho algunas rectificaciones en mi módulo, de las conclusiones que he sacado de su Method, pero me sigue dando error. Algo estoy haciendo mal. Este es mi código:¿Podrias ayudarme?Code: Select all
STATIC FUNCTION REEMPLACE (oDoc, cViejo, cNuevo) LOCAL oSelection, oTexto, oFind, oFont oSelection := oDoc oTexto := oSelection:Range oFind := oTexto:Find // oFont:Set("Color", RGB(255,255,255) ) // aqui da error // oFont:Set("Bold", .t.) // aqui da error oFind:Text:= cViejo oFind:Forward:=.T. oFind:Wrap:= INT(1) oFind:Format:=.f. oFind:MatchCase:=.f. oFind:Execute() // oFont:Invoke( "Reset" ) WHILE oFind:Found oTexto:Text:=cNuevo oFind:Execute() Enddo RETURN nil
Code: Select all
oFont := oRange:Get("Font")
Vikthor
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Vikthor,
Ahora funciona SET("Bold", .t.).- Pero cuando intento cambiar el color del oRange SET("Color", 32768), me da el siguiente error:
Error description: Error Word.Application:DOCUMENTS:OPEN:RANGE:FONT/16389 E_FAIL: COLOR
Args:
[ 1] = N 32768
Stack Calls
===========
Called from: win32ole.prg => TOLEAUTO:COLOR(0)
Called from: => HB_EXECFROMARRAY(0)
Called from: win32ole.prg => TOLEAUTO:SET(405)
¿Alguna idea?
Muchas gracias por tu ayuda
Ahora funciona SET("Bold", .t.).- Pero cuando intento cambiar el color del oRange SET("Color", 32768), me da el siguiente error:
Error description: Error Word.Application:DOCUMENTS:OPEN:RANGE:FONT/16389 E_FAIL: COLOR
Args:
[ 1] = N 32768
Stack Calls
===========
Called from: win32ole.prg => TOLEAUTO:COLOR(0)
Called from: => HB_EXECFROMARRAY(0)
Called from: win32ole.prg => TOLEAUTO:SET(405)
¿Alguna idea?
Muchas gracias por tu ayuda
Un saludo
Manuel
Manuel