Dudas con Word

Dudas con Word

Postby Manuel Valdenebro » Sun Sep 24, 2006 11:04 am

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?
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Dudas con Word

Postby Vikthor » Wed Sep 27, 2006 9:57 pm

Manuel 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?


Manuel

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  Expand view  RUN
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
User avatar
Vikthor
 
Posts: 271
Joined: Fri Oct 07, 2005 5:20 am
Location: México

Postby Manuel Valdenebro » Thu Sep 28, 2006 5:26 am

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:
Code: Select all  Expand view  RUN
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


¿Podrias ayudarme?
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby Vikthor » Thu Sep 28, 2006 11:42 pm

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:
Code: Select all  Expand view  RUN
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


¿Podrias ayudarme?


Creo que te hace falta un :
Code: Select all  Expand view  RUN
oFont  := oRange:Get("Font")
Vikthor
User avatar
Vikthor
 
Posts: 271
Joined: Fri Oct 07, 2005 5:20 am
Location: México

Postby Manuel Valdenebro » Fri Sep 29, 2006 4:50 am

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
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 80 guests