Fox a Excel

Aaron
20 de Agosto del 2004
Como podria hacerle para que varias tablas de fox se exporten a Excel pero en un mismo archivo de Excel, es decir que cada tabla sea una hoja de excel diferente. Alguien podria ayudarme???

Kop
20 de Agosto del 2004
m la verdad en la ayuda de VFP no encontre nada sobre como definir en que hoja quedara cada tabla a exportar...
lo unico que se me ocurre por ahora.. es que exportes cada tabla en un archivo separado de excel y con otro archivo de excel los unas vinculandolos...
si encuentro otra cosa te aviso.

Kop.

hector osvaldo p?z
20 de Agosto del 2004
le remito un artículo que tomé de "PORTAL FOX" el cual copia grupos de 65000 registros a diferentes hojas de un archivo de excel. Creo que le podría servir


Permite exportar de una Tabla de mas de 65000 registros a un archivo Excel.


Este proceso Crea Hojas en Excel (Del mismo Libro) y va separando copiando cada hoja con 65000 registros.




vTabla = "MiTabla"

USE (vTabla) IN 0 AGAIN

SELECT (vTabla)

vTotRegs = RECCOUNT()
vTotFil = 65000
vTotHoj = ROUND(vTotRegs / vTotFil, 0)
vNumHojDef = 3

*** Calculando el Numero de Registros que entraran en la hojas excel
CREATE CURSOR TMPHOJAS_GRR ;
(AHOJA C(06), ;
ARANGO1 N(10), ;
ARANGO2 N(10), ;
ATABLA C(50), ;
AEXCEL C(50))

vRango1 = 1

FOR vContador = 1 TO vTotHoj
APPEND BLANK
REPLACE AHOJA WITH "HOJA_" + ALLT(STR(vContador)), ;
ARANGO1 WITH vRango1, ;
ARANGO2 WITH (vRango1 + vTotFil) - 1, ;
ATABLA WITH "C:MITABLA" + ALLT(STR(vContador)) + ".DBF", ;
AEXCEL WITH "C:MITABLA" + ALLT(STR(vContador)) + ".XLS"
vRango1 = vRango1 + vTotFil
ENDFOR

SCAN
SELECT (vTabla)
COPY TO (ALLT(TMPHOJAS_GRR.ATABLA)) ;
TYPE FOX2X AS 850 ;
FOR RECNO() >= TMPHOJAS_GRR.ARANGO1 AND RECNO() <= TMPHOJAS_GRR.ARANGO2

SELECT TMPHOJAS_GRR
ENDSCAN
***
USE IN (vTabla)

WAIT "Preparando..." WIND NOWAIT

Excel1= CREATEOBJECT("Excel.Application")
WITH Excel1
.VISIBLE = .F. && VISUALIZO EXCEL .T. NO .F.

WAIT "Preparando.." WIND NOWAIT
.Workbooks.ADD && PREPARO UN NUEVO TRABAJO DE EXCEL

WAIT "Creando Hojas" WIND NOWAIT
IF vTotHoj > vNumHojDef
*** Cambia los Nombres de las hojas a : HojaP..
FOR vContador = vNumHojDef TO 1 STEP -1
vNomHoja1 = "Hoja" + ALLT(STR(vContador))
vNomHoja2 = "HojaP" + ALLT(STR((vNumHojDef - vContador) + 1))
.Sheets(vNomHoja1).Name = vNomHoja2
ENDFOR
*** Cambia los nombres de las hojas HojaP.. a Hoja..
FOR vContador = vNumHojDef TO 1 STEP -1
vNomHoja1 = "HojaP" + ALLT(STR(vContador))
vNomHoja2 = "Hoja" + ALLT(STR(vContador))
.Sheets(vNomHoja1).Name = vNomHoja2
ENDFOR
*** Agrega las Hojas que Faltan
FOR vContador = (vNumHojDef + 1) TO vTotHoj
.Sheets.Add
ENDFOR
*** Cambia los Nombres de las Hojas Hoja.. a Hoja_..
FOR vContador = vTotHoj TO 1 STEP -1
vNomHoja1 = "Hoja" + ALLT(STR(vContador))
vNomHoja2 = "Hoja_" + ALLT(STR((vTotHoj - vContador) + 1))
.Sheets(vNomHoja1).Name = vNomHoja2
ENDFOR
ELSE
FOR vContador = 1 TO vNumHojDef
vNomHoja1 = "Hoja" + ALLT(STR(vContador))
vNomHoja2 = "Hoja_" + ALLT(STR(vContador))
.Sheets(vNomHoja1).Name = vNomHoja2
ENDFOR
ENDIF
SELECT TMPHOJAS_GRR
SCAN
WAIT "Preparando la Hoja " + ALLT(TMPHOJAS_GRR.AHOJA) WIND NOWAIT
.Sheets(ALLT(TMPHOJAS_GRR.AHOJA)).Select
.Workbooks.Open(ALLT(TMPHOJAS_GRR.ATABLA))
.Range("A1:AZ65001").Select
.Selection.Copy
.ActiveWindow.ActivateNext
.ActiveSheet.Paste
.Application.CutCopyMode = .F.
.ActiveWindow.ActivateNext
.ActiveWindow.Close
ENDSCAN
.Sheets("HOJA_1").Select
WAIT CLEAR
.VISIBLE = .T.
ENDWITH

WAIT CLEAR

USE IN TMPHOJAS_GRR

RELEASE loExcel

RETURN