Reporte a excel

Hola amigo nuevamente preguntando.. Mira tengo este código 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 que cuando se genera un reporte de mi sistema y si tengo otro o otros archivos de excel abiertos de otra cosa, el reporte que genero se sobreescribe en los archivos de excel abiertos ya que no me lo abre como otro archivo o documento de exel... Espero que 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

1 Respuesta

Respuesta
1
Perdón por la demora... me colgué con la mala onda porque perdió river, bueno ya esta, el problema que tienes es que haces visile y activas la primera ventana de excel, entonces si tienes un archivo ejecutándose toma(de forma correcta)como la primera ventana a este achivo por eso cargas los datos en el archivo abierto, solucionar esto tienes dos opciones
1) Crear una nueva instancia en vez de capturar un objeto que es lo que haces vos, después de crear una nueva instancia usas el metoto open para cargar el archivo que quieres.
2) Esta opción es la que menos modificas tu código y por ahí la que más te conviene en tu código haces
XLApp.Parent.Windows(1).Visible = .t.
Tienes 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, así no sobreescribe sobre los datos del archivo abierto, Espero que solucioneesto tu problema, una vez más perdón por la demora. Suerte
Ahh! Otra cosa deja dentro del while solo la parte que carga los datos todo lo demás cuando capturas el objeto y lo pones visible puede ir afuera porque sino lo haces tantas veces como registros tenga la tabla.
Hola amigo si me funciono, pero ahora si tengo como 4 archivos de excel, y si cierro el reporte que genere me ciera todos los demás archivos de excel que tenga abierto... bueno muchas gracias
Ami se me abren en ventanas distintas y no me pasa eso la verdad no se porque te pasa eso, por ahí es una configuración de excel, ahora estoy buescando que puede ser en cuanto averigüe te lo paso. Este es el código con el que pruebo y sale teodo bien te lo paso, lo único que cambie es la tabal y el archivo excel ya creado, de acuerdo con el código 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
Oyes disculpame por no calificarte es que andaba fuera, pero ok gracias deja calarle con el código que me pasaste, y luego te comento sale, muchas gracias por todo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas