RESPUESTA A LA PREGUNTA 6982 - FOXPRO/VISUAL FOXPRO * 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 Espero que todo esto te sirva, igualmente si tenés alguna duda o queres que te ayude en algo, no dudes en escribirme. >>>> Hola Cecilia Puedes enviarme toda la informacion y ejemplos que tengas al respecto. de antemano gracias ATT Roberto Guillen El Salvador Email : rcguillen@telemovil.net Mensaje a Tel.: 8558439@notipersonal.com.sv (deja tu nombre en cuerpo de mensaje) ----- Original Message ----- From: Cecilia Colalongo To: vfoxpro@yahoogroups.com Sent: Tuesday, February 27, 2001 6:51 PM Subject: Re: [vfoxpro] A 01:40 p.m. 27/02/2001 -0400, ha escrito: >>>> ArialMuchachos, necesito llamar desde un icono de mi menu , a Excel y Word, alguien tiene algun ejemplo, si no es desde un menu tambien puede ser desde un Form, tengo un menu pero ni idea como insertarles iconos saludos y de antemano muchisimas gracias Ambos pueden tratarse dentro de VFP como objetos COM, para Word es o=CreateObject("Word.Application") y Excel es: o=CreateObject("Excel.Application") Si necesitas que en cualquiera de los dos mostrar algo predeterminado (o realizar cualquier operación) lo que tenes que hacer es grabar una macro y luego pegar el código (que queda en Visual Basic) dentro de Fox, el programa es que utiliza muchas constantes (que están en los .olb de cada aplicación) y Fox no las reconoce, yo tengo preparado el archivo de constantes de Word, si lo necesitas te lo paso, incluso tengo ejemplos. Sería más o menos algo así: o=CreateObject("Word.Application") o.Documents.Open("prueba.doc") o.ActiveDocument.SaveAs("prueba.txt",wdFormatText) Cecilia Colalongo cecilia.colalongo@usa.net