Que hace fox?, simplemente utiliza la función OLE , (Objeto Incrustado) y te
permite manipular el archivo Word o Excel desde fox.
Con este truco puedes verificar si el cliente tiene istalado el Excel
Declare Integer FindWindow In WIN32API ;
String cNull, String cWinName
********************
nOk = FindWindow("XLMAIN", 0)
*WAIT WINDOW "Excel"+Iif(nOk > 0,""," no está")+" ejecutándose"
*=MESSAGEBOX( "Excel"+Iif(nOk > 0,""," no está")+" ejecutándose",16+1, "!!!
Atención...")
IF nOk = 0
=MESSAGEBOX("Lo siento no se ha podido detectar que el programa de excel
este ejecutandode en este equipo, por favor si lo tiene instalado habralo, o
de no notifique a su administrador del sistema",16+1,"!!!Atención....")
*RETURN
ELSE
* continuar no hay problem
ENDIF
jairo
-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Julio Cesar Vente
Ruiz
Enviado el: Martes, 25 de Enero de 2011 00:53
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Abrir archivo de Excel en formulario de FOX
A mi me funciona bien el código
MK
El codigo solo te avisa si esta “abierto” o no Excel, nada mas.
Si quieres abrir Excel usa este código :
Con este código enviaba datos a Excel
*Do Excel With 'Titulo','TablaoCursor',5,'Caption1','Caption2'
Y lo ejecutas como esta arriba con do.
Graba esto en un excel.prg
lparam cTit,nTabla,nCampos,Param1,Param2,Param3,Param4,Param5,Param6,Param7,Param8,Param9,Param10,Param11,;
Param12,Param13,Param14,Param15,Param16,Param17,Param18,Param19,Param20,Param21,Param22,Param23,Param24, Param25, Param26
***********************------------***********************
* cTit = Titulo
* nTabla = Nombre de la Tabla o cursor
* nCampos = # de Campos a usarse
* Param1-22 = Caption´s,al final de los parametros dados poner ( " " )
*Me canse de hacer un reporte de Excel para cada uno Mejor uno generico y se acabo el asunto " (;o) "
* Miguel Canchas - Spider Soft
***********************------------***********************
Hojacalculo = CreateObject("excel.application")
XLApp = HojaCalculo &&.application
XLApp. Visible = .t.
XLApp.Workbooks.Add
XLApp.ActiveWindow.Zoom = 90 && Zoom 90%
XLSheet = XLApp.Activesheet
XLSheet.Name = "Datos"
cCad = 'BCDEFGHIJKLMNOPQRSTUVWXYZ'
_Cad = ''
Sele &nTabla
Afield(Arrau)
For i = 1 To nCampos
nCam = Field(i)
_Cad = _Cad + nCam + ',' && cadena con los campos del cursor
cEx = Subst(cCad,i,1) && tomando la columna el nombre de la columna
XLSheet.Columns("&cEx:&cEx").Select && tomando la columna
Do Case
Case Type(nCam) = 'D'
XLApp.Selection.NumberFormat = "mm/dd/yyyy" && si es fecha
Case Type(nCam) = 'C'
XLApp.Selection.NumberFormat = "@" && si es caracter
Case Type(nCam) = 'N'
If Arrau(i,4) = 0
XLApp.Selection.NumberFormat = "0" && si es numerico sin decimales
Else
XLApp.Selection.NumberFormat = "0.00" && si es numerico con decimales
Endif
EndCase
EndFor
*text to INSTRUCCION noshow
_Cad = Subst(_Cad,1,len(_Cad)-1) && limpiando la cadena con los campos
Subst(_Cad,1,len(_Cad)-1) && limpiando la cadena con los campos
*endtext
*Sele instruccion From &nTabla Into Cursor _datw && cursor con los campos
Sele &_Cad From &nTabla Into Cursor _datw && cursor con los campos
XLSheet.Cells(1,1).value = cTit
XLSheet.Cells(1,1).Font.Bold = .T.
XLSheet.Cells(1,1).Font.Size = 11
XLSheet.Cells(1,1).Font.Name = "Arial"
XLSheet.Cells(1,1).Font.ColorIndex = 5
*Sele _datw
Sele &nTabla
IF RECCOUNT() = 0
RETURN 0
ENDIF
*_VFP.DataToClip(nTabla,,3) && Tomando datos
_VFP.DataToClip('_datw',,3) && Tomando datos
XLSheet.CELLS(2,2).SELECT
XLSheet.Paste && Pegar datos
ll = 0
cCad = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
For i = 2 To pcount() - 3 && Parametros recibidos menos los 3 primeros que son titulo,tabla y # campos
ll = ll + 1
xPar = 'Param'+Allt(Str(ll)) && Valor del parametro recibido
XLSheet.Cells(2,i).value = &xPar && Mandando el valor del parametro recibido
If i = 2
cAx = Subst(cCad,i,1)
Else
cEx = Subst(cCad,i,1)
Endif
* XLSheet.Columns("&cEx:&cEx").Select
* XLSheet.Columns("&cEx:&cEx").EntireColumn.AutoFit
xlp = cEx + '2'
XLSheet.Range("B2:&xlp").Interior.ColorIndex = 36
XLSheet.Range("B2:&xlp").Font.Bold = .T.
XLSheet.Range("B2:&xlp").Font.ColorIndex = 1
XLSheet.Range("B2:&xlp").HorizontalAlignment = 3
EndFor
XLSheet.Columns("&cAx:&cEx").Select
XLSheet.Columns("&cAx:&cEx").EntireColumn.AutoFit
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de tonny chuya
Enviado el: jueves, 27 de enero de 2011 08:52 p.m.
Para: publice...@googlegroups.com
Este mensaje ha sido enviado gracias al servicio BlackBerry de Movilnet
_Cad =_Cad + nCam + ',' && cadena con los campos del cursor
cEx = Subst(cCad,i,1) && tomando la columna el nombre de la columna
XLSheet.Columns("&cEx:&cEx").Select && tomando la columna
Do Case
Case Type(nCam) = 'D'
XLApp.Selection.NumberFormat = "mm/dd/yyyy" && si es fecha
Case Type(nCam) = 'C'
XLApp.Selection.NumberFormat = "@" && si es caracter
Case Type(nCam) = 'N'
If Arrau(i,4) = 0
XLApp.Selection.NumberFormat = "0" && si es numerico sin decimales
Else
XLApp.Selection.NumberFormat = "0.00" && si es numerico con decimales
Endif
EndCase
EndFor
*text to INSTRUCCION noshow
_Cad = Subst(_Cad,1,len(_Cad)-1) && limpiando la cadena con los campos
Subst(_Cad,1,len(_Cad)-1) && limpiando la cadena con los campos
*endtext
*Sele instruccion From &nTabla Into Cursor_datw && cursor con los campos
Este mensaje ha sido enviado gracias al servicio BlackBerry de Movilnet
Hace tiempo publicaron en este foro un truco de ver el pdf dentro de un form.. me imagino que será igual.
Por lo que veo tienes que insertar un control activeX para visualizar el documento word dentro formulario..
Parecido a este codigo que es para el pdf
Acá hay otra forma, en el init del form pongo esto
This.AddObject("owb","oleControl","Shell.Explorer.2")
This.oWb.Top = 0
This.oWb.Left = 0
This.oWb.Width = Thisform.Width
This.oWb.Height = Thisform.Height
This.oWb.Visible = .T.
This.oWb.Anchor = 240
This.AddProperty("cPDFFileName","")
This.AddProperty("nPdfLoadTimeout",30)
* Get PDF file name
Thisform.cPdfFileName = Getfile("pdf")
* Display the name in the textbox
This.Caption = Thisform.cPdfFileName
If Not Empty(Thisform.cPdfFileName)
* Display PDF
Thisform.ShowPdf()
Endif
luego el método showpdf contiene esto:
Local lnSeconds
* Clear Web browser control by loading blank page
Thisform.oWB.Object.Navigate2("About:Blank")
* Wait for load to complete
lnSeconds = Seconds()
Do While (Thisform.oWB.Object.Busy Or Thisform.oWB.Object.ReadyState <> 4) ;
AND (Seconds() - lnSeconds) < This.nPdfLoadTimeout
DoEvents
Enddo
* Load PDF
Wait Window Nowait "Cargando PDF ..."
Thisform.oWB.Object.Navigate2(Thisform.cPdfFileName)
* Wait for PDF to load
lnSeconds = Seconds()
Do While (Thisform.oWB.Object.Busy Or Thisform.oWB.Object.ReadyState <> 4) ;
AND (Seconds() - lnSeconds) < This.nPdfLoadTimeout
DoEvents
Enddo
Wait Clear
* PDF display can be adjusted as shown in AdjustPdfView method
* Uncomment next line if you want to do that and add AdjustPdfView method to the form/class
*This.AdjustPdfView()
De: Yvan GMAIL [mailto:yvan.c...@gmail.com]
Enviado el: Viernes, 28 de Enero de 2011 08:53 a.m.
Para: 'publice...@googlegroups.com'
Asunto: RE: [vfp] Abrir archivo de Excel en formulario de FOX
Hace tiempo publicaron en este foro un truco de ver el pdf dentro de un form.. me imagino que será igual.
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de chuyat...@gmail.com
Enviado el: Viernes, 28 de Enero de 2011 08:49 a.m.
Este mensaje ha sido enviado gracias al servicio BlackBerry de Movilnet
Perdonen por no responder estaba ocupado en otra parte . y a hasta ahora he vuelto
La primera línea de código si,, avisa si existe Excel instalado con el fin de que el cliente pueda abrir el archivo mas tarde
Jairo
Tonny,
Esto lo pasé como referencia.. pero no es exactamente lo que tu necesitas.. pero si de todas maneras quieres hacerlo funcionar-
Primero crea un método llamado showpdf y pegas el código allí .. (Menu Formulario.. Nuevo Metodo.)
Te adjunto el form de ejemplo.. lo probé con Excel.. pero lo abre en una nueva ventana.. en cambio pdf si.. Me imagino que para Excel. Debes insertar un control active X.. y enlazarlo con el doverb creo.. estoy dando pistas. Nomás.
luego el método showpdf contiene esto:
Local lnSeconds
* Clear Web browser control by loading blank page
Thisform.oWB.Object.Navigate2("About:Blank")
* Wait for load to complete
lnSeconds = Seconds()
Do While (Thisform.oWB.Object.Busy Or Thisform.oWB.Object.ReadyState <> 4) ;
AND (Seconds() - lnSeconds) < This.nPdfLoadTimeout
DoEvents
Enddo
* Load PDF
Wait Window Nowait "Cargando PDF ..."
Thisform.oWB.Object.Navigate2(Thisform.cPdfFileName)
* Wait for PDF to load
lnSeconds = Seconds()
Do While (Thisform.oWB.Object.Busy Or Thisform.oWB.Object.ReadyState <> 4) ;
AND (Seconds() - lnSeconds) < This.nPdfLoadTimeout
DoEvents
Enddo
Wait Clear
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de tonny chuya
Enviado el: Viernes, 28 de Enero de 2011 05:55 p.m.
Para: publice...@googlegroups.com
Asunto: Re: [vfp] Abrir archivo de Excel en formulario de FOX
Enverdad siento que ya estoy muy latoso con esto y de corazon lo siento mucho he intentado la mil y una formas para poder hacer esto pero nada me resulta me gustaria que alguien me diera los pasos y donde va cada linea de codigo que colocare a continuacion ahi algunas que me dice pero otras realmente no se donde va.... la ultima parte la coloque en un command button pero no se si sera asi por q todo el tiempo me da un error que es el siguiente:
Cheka este link… lo he probado en windows 7.. y no logro.. no se si en xp si funciona bien. Pero supuestamente si deberia funcionar.