Estoy intentando realizar unos informes con Office Word desde mi apicción. Todo bien, se habre el Office, le cambio los márgenes al documento y puedo escribir en el. El problema surge cuando quiero cambiar el tipo de letra. No lo consigo: Esto es lo que hago, pero no me funciona.
Tengo Win32Ole del 2006
- Code: Select all Expand view
FUNCTION ImprDocs(oDlg,aVar,nCl)
LOCAL oWord := TOleAuto():New("Word.Application")
LOCAL oDoc := oWord:Get("Documents")
LOCAL oTexto,oPageSetup
LOCAL oActiveDoc,oSelection
*
oDoc:Invoke( "Add" )
oActiveDoc := oWord:Get("ActiveDocument")
oTexto := oWord:Get("Selection")
oSelection := oActiveDoc
*
oPageSetup := oActiveDoc:Get("PageSetup")
oPageSetup:LeftMargin := "1,90"
oPageSetup:RightMargin := "1,90"
oPageSetup:TopMargin := "2.54"
oPageSetup:BottomMargin := "2,00"
RELEASE oPageSetup
*
Escribe(oTexto,"PRUEBA 1"+CHR(13))
Escribe(oTexto,"PRUEBA 2","Time New Roman",9,.T.,,,CLR_HRED)
*
oActiveDoc:Saved := .T.
oWord:Visible := .T.
oWord:Set("WindowState",1)
*
RELEASE oDoc
RELEASE oTexto
RELEASE oActiveDoc
RELEASE oSelection
*
oWord := NIL
SysRefresh()
*
RETURN NIL
*
FUNCTION Escribe(oTexto,cTexto,cFont,nSize,lBold,lItalic,lUnder,nColor)
LOCAL oFont := oTexto:Get("Font")
DEFAULT cFont := "Arial" , ;
nSize := 9 , ;
lBold := .F. , ;
lItalic := .F. , ;
lUnder := .F.
*
oFont:Set( "Name", cFont )
oFont:Set( "Size", nSize )
IF lBold
oFont:Set( "Bold", .T. )
ENDIF
IF lItalic
oFont:Set( "Italic", .T. )
ENDIF
IF lUnder
oFont:Set( "Underline", .T. )
ENDIF
IF nColor # NIL
oFont:Set( "Color", nColor )
ENDIF
*
oTexto:Invoke( "TypeText", cTexto )
*
oFont:Invoke( "Reset" )
RELEASE oFont
RETURN NIL
Intento asignarle un FONT a oWord con:
- Code: Select all Expand view
- DEFINE FONT oFont NAME "Arial" SIZE 0,-9 OF oWord
Pero me sale el error: TOLEAUTO:NLOGPIXELY
que, según parece, donde realmente ocurre es durante la creación del objeto TFONT cuando intenta hacer:
- Code: Select all Expand view
if oDevice !nil
::nImpHeight = ( oDevice:nLogicPixelY() / 72 ) * ::nInpHeight
endif
Pues TOLEAUTO, que en este caso es el oDevice, no tiene ese Método.
No se como solucionarlo.
Ayuda Porfa
Gracias...