Exportar registros de una tabla a exel

Buen dia Sr. Javier
Estoy tratando de exportar registros de una tabla en este caso artículos a exel pero con el codigo que utilizo solo me exporta el ultimo registro..mas abajo le detallo el codigo esperando a que me pueda dar una mano, mi mail usted ya tiene por eso no le reenvío..desde ya muchas gracias
SET DELETED ON
MsExcel = Createobject("Excel.Application")
If Type("MsExcel") = "O" Then
MsExcel.Visible = .T. && Esta línea se coloca para ver si llega los datos no es recomendable colocarla.
MsExcel.Workbooks.Add()
MsExcel.Worksheets(1).Name = "Visual FoxPro" && el índice 1 indica el orden sucesivo de las hojas en excel y la propiedad Name sirve para cambiar el nombre de la hoja de Excel.
WkpGxtab = MsExcel.ActiveSheet
With WkpGxtab.Range(WkpGxtab.Cells(3,1), WkpGxtab.Cells(3,4))
.Borders.LineStyle = 7
.Borders(1).Weight = 3
.Borders(2).Weight = 3
.Borders(3).Weight = 3
.Borders(4).Weight = 3
.Font.Bold = .T.
.Font.ColorIndex = 5
.Interior.ColorIndex = 4
.HorizontalAlignment = 3
.VerticalAlignment = 2
Endwith
WkpGxtab.Range("A1").Select
WkpGxtab.Cells(1,1).Value = "Datos de Visual FoxPro"
WkpGxtab.Cells(3,1).Value = "Código"
WkpGxtab.Cells(3,2).ColumnWidth = 30
WkpGxtab.Cells(3,2).Value = "Descripcion"
WkpGxtab.Cells(3,3).ColumnWidth = 40
WkpGxtab.Cells(3,3).Value = "Stock"
WkpGxtab.Cells(3,4).ColumnWidth = 20
WkpGxtab.Cells(3,4).Value = "Precio"
lcRec = Reccount()
DO WHILE !EOF()
i=1
WkpGxtab.Range(WkpGxtab.Cells(i+3,1), WkpGxtab.Cells(i+3,4)).Select
WkpGxtab.Cells(i+3,1).Value = idarticulo
WkpGxtab.Cells(i+3,2).Value = descripcion
WkpGxtab.Cells(i+3,3).Value = stock
WkpGxtab.Cells(i+3,4).Value = precio
With WkpGxtab.Range(WkpGxtab.Cells(i+3,1), WkpGxtab.Cells(lcRec+3,4))
.Borders.LineStyle = 7
.Borders(1).Weight = 2
.Borders(2).Weight = 2
.Borders(3).Weight = 2
.Borders(4).Weight = 2
ENDWITH
i=i+1
SKIP
ENDDO
endif

1 Respuesta

Respuesta
1
El problema es que te está escribiendo siempre en la primera fila del Excel debido a que dentro del do while estás volviendo a poner I = 1:
DO WHILE !EOF()
i=1
WkpGxtab.Range(WkpGxtab.Cells(i+3,1), WkpGxtab.Cells(i+3,4)).Select
WkpGxtab.Cells(i+3,1).Value = idarticulo
WkpGxtab.Cells(i+3,2).Value = descripcion
WkpGxtab.Cells(i+3,3).Value = stock
WkpGxtab.Cells(i+3,4).Value = precio
With WkpGxtab.Range(WkpGxtab.Cells(i+3,1), WkpGxtab.Cells(lcRec+3,4))
.Borders.LineStyle = 7
.Borders(1).Weight = 2
.Borders(2).Weight = 2
.Borders(3).Weight = 2
.Borders(4).Weight = 2
ENDWITH
prueba con i=1 antes del DO WHILE !EOF()
Salu2!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas