Inicio > Visual FoxPro > pablonomas > reporte a excel

reporte a excel

Experto:
Usuario: Anónimo Fecha: 16/05/2008
Valoración: (4,00 sobre 5) Categoría: Visual FoxPro
08/05/2008
Usuario
hola amigo nuevamente preguntando..mira tengo este codigo para un reporte en excel, el archivo de excel ReporLPM.xls ya esta creado y ya tiene formato como color,tamaño,tipo de letra etc... el problema es q cuadno se genera un reporte de mi sistema y si tengo otro o otros archivos de excel abiertos de otra cosa, el reporte q genero se sobreescribe en los archivos de excel abiertos ya q no me lo abre como otro archivo o documento de exel...espero q me haiga esxplicado...
LOCAL xFila
xFila= 15
SELECT curfacturas
GO TOP IN curfacturas
DO WHILE !EOF("curfacturas")
tmpsheet = GetObject("C:\LPM\ReporLPM.xls")
XLApp = tmpsheet.application
XLApp.Parent.Windows(1).Visible = .t.
XLSheet = XLApp.ActiveSheet
XLApp.Visible = .t.
XLSheet.Cells(xFila,1) = contador
XLSheet.Cells(xFila,2) = curfacturas.numero
XFila = xFila + 1
SKIP IN curfacturas
ENDDO
10/05/2008
eldimas, experto respondiendo en Visual FoxPro
Experto
hola perdon por la demora......me colgue con la mala onda porque perdio river, bueno ya esta, el problema que tenes es que haces visile y activas la primera ventana de excel, entonces si tenes un archivo ejecutandose toma(de forma correcta)como la primera ventana a este achivo por eso cargas los datos en el archivo abierto, solucionar esto tenes dos opciones
1) crear una nueva instancia en vez de capturar un objeto que es lo que haces vos, despues de crear una nueva instancia usas el metoto open para cargar el archivo que queres.
2) esta opcion es la que menos modificas tu codigo y por ahi la que mas te conviene en tu codigo haces
XLApp.Parent.Windows(1).Visible = .t.
tenes que cambiarlo por la ultima ventana generada
XLApp.Parent.Windows.count()   con esto tenes la ultima ventana
XLApp.Parent.Windows(XLApp.Parent.Windows.count()).Visible = .t.
y todo lo mismo, asi no sobreescribe sobre los datos del archivo abierto, Espero que solucioneesto tu problema, una vez mas perdon por la demora. Suerte
Ahh!! otra cosa deja dentro del while solo la parte que carga los datos todo lo demas caundo capturas el objeto y lo pones visible puede ir afuera porque sino lo haces tantas veces como registros tenga la tabla.
 
10/05/2008
Usuario
hola amigo si me funciono,pero ahora si tengo como 4 archivos de excel, y si cierro el reporte q genere me ciera todos los demas archivos de excel q tenga abierto.......bueno muchas gracias
10/05/2008
eldimas, experto respondiendo en Visual FoxPro
Experto
hola, mira ami se me abren en ventanas distintas y no me pasa eso la verdad no se porque te pasa eso, por ahi es una configuracion de excel, ahora estoy buescando que puede ser en cuanto averigue te lo paso. Este es el codigo con el que pruevo y sale teodo bien te lo paso, lo unico que cambie es la tabal y el archivo excel ya creado, de acuerdo con el codigo que escribiste en la pregunta
LOCAL xFila
xFila= 15
SELECT cliente
GO TOP IN cliente
DO WHILE !EOF("cliente")
tmpsheet = GetObject("C:\cliente.xls")
XLApp = tmpsheet.application
XLApp.Parent.Windows(XLApp.Parent.Windows.count()).Visible = .t.
XLSheet = XLApp.ActiveSheet
XLApp.Visible = .t.
XLSheet.Cells(xFila,1) = xfila
XLSheet.Cells(xFila,2) = cliente.cl02
XFila = xFila + 1
SKIP IN cliente
ENDDO
 
16/05/2008
Usuario
oyes disculpame por no calificarte es q andaba fuera,pero ok gracias deja calarle con el codigo q me pasastes, y luego te comento sale,muchas gracias por todo...
Enlaces patrocinados