Tu concepto de trabajar Excel desde visual fox no esta correcto..
puesto que si quieres hacer eso dejale el trabajo a Excel, y le pones una condicion que repita el encabezado una vez hagas tu plantilla con titulos, incluso si quires puedes ponerle totales y que valla ingresando..
Pero yo en este caso solo estoy como 10 valores a una plantilla ya hecha.. y luego vengo abro la plantilla ingreso los datos y listo..lo muesto al usuario o lo imprimo de una vez segun sea el gusto de cada quien..
Saludos..
Saul Hernandez
*PARAMETERS _Archivo
PRIVATE lcTextFile
lcTextFile = ''
xD = SYS(5)
_Archivo = 'Plantilla_DepNcNd'
lcTextFile = xd+"\Aperson\Amory\SistemaNew\Excel\"+ _Archivo +".xls"
crutinaerroractual = ON("Error")
lhuboerror = .F.
ON ERROR LHUBOERROR = .T.
oexcel = CREATEOBJECT("Excel.Application")
ON Error &cRutinaErrorActual
IF lhuboerror
nresp = MESSAGEBOX("¿Desea generar una lista sin formato?", 35,"Excel NO esta instalado en esta computadora.")
IF nresp = 6
generacsv()
ENDIF
ELSE
generahojaelectronica()
ENDIF
RETURN
ENDPROC
** Si no Existe excel Quiere mandar a un Archivo
PROCEDURE GeneraCSV
carchivo = GETFILE("Hoja excel:XLS", ;
"Archivo Excel", ;
"Grabar", 0)
IF EMPTY(carchivo)
= MESSAGEBOX("Debe seleccionar un nombre de archivo.",64, "Error")
ELSE
COPY TO (carchivo) TYPE XLS
= MESSAGEBOX("El archivo fue grabado satisfactoriamente",0, "")
ENDIF
ENDPROC
**Cominesa a Generar la Hoja
PROCEDURE GeneraHojaElectronica
*WAIT WINDOW NOCLEAR NOWAIT "Generando la hoja, espere un momento por favor."
oexcel.DisplayAlerts = .F. && Algo asi como SET SAFETY OFF
oexcel.workbooks.Open(lcTextFile)
WITH oexcel.worksheets(1)
** Barre la tabla en el Excel
SELECT Maestro
GOTO TOP
j = 14
jj = 8
jjj = 8
nExplica = ALLTRIM(Maestro.Explicacion)
nTotCar = 0.00
nTotAbo = 0.00
.range("B1").value = xEmpresa
.range("B2").value = xTipoRep
.range("D4").value = Maestro.Fecha
.range("G4").value = Maestro.Monto
.range("D6").value = Maestro.TasaCam
.range("G8").value = Maestro.numero
.range("B8").value = xBanco
.range("D10").value = xBanco2
SCAN ALL
cj = ALLTRIM(STR(j, 10,0))
.range("B" + cj).value = "'" +Maestro.cCosto
.range("C" + cj).value = Maestro.Cuenta
.range("D" + cj).value = ALLTRIM(Maestro.Descri)
IF Maestro.cargos > 0
.range("G" + cj).value = Maestro.cargos
ENDIF
IF Maestro.abonos > 0
.range("H" + cj).value = Maestro.abonos
ENDIF
nTotCar = Maestro.cargos + nTotCar
nTotAbo = Maestro.abonos + nTotAbo
j = j + 1
ENDSCAN
*-Totales
.range("G27").value = nTotCar
.range("H27").value = nTotAbo
.range("G14:H27" + cj).select()
oexcel.selection.numberformat = "#,##0.00_);[Red](#,##0.00)"
*- Explicacion
.range("C28").value = nExplica
ENDWITH
*-Impresion
oexcel.visible = .F.
oexcel.activeworkbook.printout()
oexcel.application.quit
*-Desconectar
RELEASE oexcel
ENDPROC
**