HOLA... NO TENGO idea que quieres hacer con el macro, si desde Visual fox lo puedes hacer todo.. revisa este codigo lo que hago es hacer una plantilla en Excel y luego editarla y modificarla desde visual fox..
No se si con esto te ayude.. pero cualquier cosa ala orden..
PRIVATE lcTextFile
lcTextFile = ''
xD = SYS(5)
_Archivo = 'Plantilla_Poliza'
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 CuRepPoliza
GOTO TOP
.range("B1").value = xEmpresa
.range("C4").value = CuRepPoliza.numero_cpc
.range("F4").value = CuRepPoliza.fecha_cpc
.range("C6").value = CuRepPoliza.grupol_cpc+" "+CuRepPoliza.Nombre_Cg
j = 9
jj = 8
jjj = 8
nExplica = ALLTRIM(cuRepPoliza.razon_epl)
nTotCar = 0.00
nTotAbo = 0.00
SCAN ALL
cj = ALLTRIM(STR(j, 10,0))
.range("B" + cj).value = "'" +TRANSFORM(CuRepPoliza.Codcue_dpc, "@R " + _cmascara)
.range("D" + cj).value = ALLTRIM(CuRepPoliza.nombre_cta)
.range("G" + cj).value = CuRepPoliza.codcdc_dpc
IF CuRepPoliza.cargos > 0
.range("E" + cj).value = CuRepPoliza.cargos
ENDIF
IF CuRepPoliza.abonos > 0
.range("F" + cj).value = CuRepPoliza.abonos
ENDIF
nTotCar = CuRepPoliza.cargos + nTotCar
nTotAbo = CuRepPoliza.abonos + nTotAbo
j = j + 1
**- Se Agranda el Formato inserta una linea
IF j > 12
oexcel.Rows(j).Insert
ENDIF
ENDSCAN
IF j < 13
j = 14
ELSE
oexcel.Rows(j).delete
j = j + 1
ENDIF
*-Totales
cj = ALLTRIM(STR(j, 10,0))
.range("E" + cj).value = nTotCar
.range("F" + cj).value = nTotAbo
j = j + 2
cj = ALLTRIM(STR(j, 10,0))
*- Explicacion
.range("C"+cj).value = nExplica
ENDWITH
*-Impresion
oexcel.visible = .t.
*!* oexcel.activeworkbook.printout()
*!* oexcel.application.quit
*-Desconectar
RELEASE oexcel
ENDPROC
**