FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Dudas con Word
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Dudas con Word
Posted: 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
Posts: 298
Joined: Fri Oct 07, 2005 05:20 AM
Re: Dudas con Word
Posted: Wed Sep 27, 2006 09: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.

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
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Dudas con Word
Posted: Thu Sep 28, 2006 05: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:
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
Posts: 298
Joined: Fri Oct 07, 2005 05:20 AM
Dudas con Word
Posted: 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:
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 :
oFont  := oRange:Get("Font")
Vikthor
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Dudas con Word
Posted: Fri Sep 29, 2006 04: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

Continue the discussion