Pregunta: | 38366 - JUSTIFICAR TEXTO DE WORD VIA PROGRAMA DE VFP 6 |
Autor: | Ricardo Andres Hinostroza Levano |
Hola es la primera vez que consulta deseo sabe como justificar un parrafo u Hoja entera de Word por medio de un Programa de VFP , bueno he creado un PRG que me Crea un Documento en el cual se muestran datos en variables , ademas de cambiarle la Fuente he podido cambiar el Tamaño de la Fuente ademas de Agrrgarle el Efecto de Negrita al texto , pero deseo saber como Justificarlo Automaticamente |
Respuesta: | Cecilia Colalongo |
* Word y Excel pueden tratarse como dos objetos COM, las clases de ambos son:
Word.Application Excel.Application Esto es: o=CreateObject("Word.Application") o=CreateObject("Excel.Application") * Algunos comandos de Word: o.Documents.Add() && Agrega un nuevo documento. o.Visible=.T. && Muestra la aplicación. o.Quit && Cierra la aplicación. Los dos últimos corren tanto para Word como para Excel. * La mejor forma de conocer todos los comandos es grabando macros y luego convirtiendo el código de las mismas (queda en Visual Basic) a VFP, por ejemplo una de Word (Herramientas -> Macros -> Grabar nueva macro) y luego ves el código (ALT+F11) Sub Macro2() Documents.Add NewTemplate:=False, DocumentType:=0 Selection.TypeText Text:="Esta es una prueba con Word." Selection.TypeParagraph End Sub El cambio para Visual Fox sería: #DEFINE True .T. #DEFINE False .F. WITH o .Documents.Add() .NewTemplate=False .DocumentType=0 .Selection.TypeText("Esta es una prueba con Word.") .Selection.TypeParagraph ENDWITH * En este ejemplo sencillo no se ve el problema principal que son todas las constantes que usan Word y Excel en estas macros. Estos archivos son msword9.olb y excel9.olb (en el caso de Office 2000 o msword8.olb y excel8.olb en el caso de Office 97), estos archivos de tipos los puede interpretar Visual Basic pero no VFP, para poder convertir estos archivos a .h (que sí lo reconoce VFP) tenés que hacer lo siguiente: 1. En el Visual Studio 6 (creo que en el 5 también) viene una utilidad que se llama: OLE View, dentro de el entrás a File -> View TypeLib y elegís el archivo .olb que quieras (por lo general están siempre en ...\Microsoft Office\Office) ahí lo vas a ver en el panel de la derecha lo que tenés que hacer es seleccionar todo ese texto y copiarlo en un nuevo archivo de texto. 2. Una vez que tenés ese archivo tenés que correrle este programa que te crea un .h (o lo que vos le indiques) con la sintaxis de VFP: #DEFINE ... El código es: LPARAMETERS tcArchivoEntrada, tcArchivoSalida LOCAL lnArchivoEntrada, lnArchivoSalida, lxTexto, lxTextoSalida, llSalida IF PCOUNT()=0 OR !FILE(tcArchivoEntrada) MESSAGEBOX("Debe indicar el nombre del archivo",16,"¡Atención!") RETURN ENDIF IF PCOUNT()=1 lnPoscPunto=RAT(".",tcArchivoEntrada) tcArchivoSalida=LEFT(tcArchivoEntrada, lnPoscPunto - 1)+".h" ENDIF CLOSE ALL lnArchivoEntrada=FOPEN(tcArchivoEntrada) lnArchivoSalida=FCREATE(tcArchivoSalida) lxTexto="" lxTextoSalida="" llSalida=.F. DO WHILE !FEOF(lnArchivoEntrada) lxTexto=FGETS(lnArchivoEntrada) IF "}" $ lxTexto llSalida=.F. ENDIF IF llSalida lxTextoSalida = ALLTRIM(lxTexto) lxTextoSalida = STRTRAN(lxTextoSalida,"="," ") lxTextoSalida = "#DEFINE "+ALLTRIM(lxTextoSalida) IF RIGHT(lxTextoSalida,1)="," lxTextoSalida = SUBSTR(lxTextoSalida,1,LEN(lxTextoSalida)-1) ENDIF =FPUTS(lnArchivoSalida,ALLTRIM(lxTextoSalida)) ENDIF IF "ENUM {" $ UPPER(lxTexto) llSalida = .T. ENDIF ENDDO CLOSE ALL |