Fox a Excel
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???
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.
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.
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
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
