Anónimo
Envío de una gráfica realizada en fox a Excel
Una vez realizada una gráfica en visual fox como la puedo enviar a Excel.
Respuesta de Alonso Jarrín Solís
1
1
Código para crear un gráfico de Visual FoxPro en Excel
Primero que todo hay que tener en cuenta que no se puede pasar un gráfico de Visual FoxPro a Excel, simplemente enviar los datos de Visual FoxPro a Excel para luego crear el gráfico en Excel, el cual será obviamente el mismo de Visual FoxPro, es decir, la información con la que se crea el gráfico de Visual FoxPro será la misma que se envíe a Excel para crear un gráfico con las mismas características del gráfico de Visual FoxPro, ejemplo:
Supongamos que hay una tabla de productos de la cual hemos creado un gráfico de cantidad de existencias por producto, entonces esa misma información la enviamos a Microsoft Excel para crear el gráfico:
Select Productos
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()
WkpGxtab = MsExcel.ActiveSheet
* Pasamos los datos de la tabla a la hoja de cálculo 2 de Excel With MsExcel. Worksheets("Hoja2"). Range(MsExcel. Worksheets("Hoja2"). Cells(3,1), MsExcel. Worksheets("Hoja2").Cells(3,2))
.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 = 6
.HorizontalAlignment = 3
.VerticalAlignment = 2
Endwith
MsExcel.Worksheets("Hoja2").Cells(1,1).Value = "Datos para el gráfico."
MsExcel.Worksheets("Hoja2").Cells(1,1).ColumnWidth = 30
MsExcel.Worksheets("Hoja2").Cells(3,1).Value = "Producto"
MsExcel.Worksheets("Hoja2").Cells(3,2).Value = "Existencias"
For i = 1 To Reccount()
Go i
Enviar los datos de la tabla a la hoja de cálculo.
MsExcel.Worksheets("Hoja2").Cells(i+3,1).Value = Prod_nom
MsExcel.Worksheets("Hoja2").Cells(i+3,2).Value = Exist_prod
With MsExcel.Worksheets("Hoja2").Range(MsExcel.Worksheets("Hoja2").Cells(i+3,1), MsExcel.Worksheets("Hoja2").Cells(i+3,2))
.Borders.LineStyle = 7
.Borders(1).Weight = 2
.Borders(2).Weight = 2
.Borders(3).Weight = 2
.Borders(4).Weight = 2
Endwith
Endfor
Crear el gráfico.
Gráfico = WkpGxtab.ChartObjects.Add(100, 100, 200, 200).WkpGxtab.Chartobjects(1).Chart.Chartwizard(MsExcel.Worksheets("Hoja2").Range(MsExcel.Worksheets("Hoja2").Cells(4,1), MsExcel.Worksheets("Hoja2").Cells(i+2,2)),COLUMN3D,4,1,0,1,1,"","","","")
WkpGxtab.ChartObjects(1).Select
WkpGxtab.ChartObjects(1).Copy
WkpGxtab.ChartObjects(1).Chart.Axes(1).HasTitle = .T.
WkpGxtab.ChartObjects(1).Chart.Axes(1).AxisTitle.Caption = "Gráfico de Visual FoxPro"
Primero que todo hay que tener en cuenta que no se puede pasar un gráfico de Visual FoxPro a Excel, simplemente enviar los datos de Visual FoxPro a Excel para luego crear el gráfico en Excel, el cual será obviamente el mismo de Visual FoxPro, es decir, la información con la que se crea el gráfico de Visual FoxPro será la misma que se envíe a Excel para crear un gráfico con las mismas características del gráfico de Visual FoxPro, ejemplo:
Supongamos que hay una tabla de productos de la cual hemos creado un gráfico de cantidad de existencias por producto, entonces esa misma información la enviamos a Microsoft Excel para crear el gráfico:
Select Productos
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()
WkpGxtab = MsExcel.ActiveSheet
* Pasamos los datos de la tabla a la hoja de cálculo 2 de Excel With MsExcel. Worksheets("Hoja2"). Range(MsExcel. Worksheets("Hoja2"). Cells(3,1), MsExcel. Worksheets("Hoja2").Cells(3,2))
.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 = 6
.HorizontalAlignment = 3
.VerticalAlignment = 2
Endwith
MsExcel.Worksheets("Hoja2").Cells(1,1).Value = "Datos para el gráfico."
MsExcel.Worksheets("Hoja2").Cells(1,1).ColumnWidth = 30
MsExcel.Worksheets("Hoja2").Cells(3,1).Value = "Producto"
MsExcel.Worksheets("Hoja2").Cells(3,2).Value = "Existencias"
For i = 1 To Reccount()
Go i
Enviar los datos de la tabla a la hoja de cálculo.
MsExcel.Worksheets("Hoja2").Cells(i+3,1).Value = Prod_nom
MsExcel.Worksheets("Hoja2").Cells(i+3,2).Value = Exist_prod
With MsExcel.Worksheets("Hoja2").Range(MsExcel.Worksheets("Hoja2").Cells(i+3,1), MsExcel.Worksheets("Hoja2").Cells(i+3,2))
.Borders.LineStyle = 7
.Borders(1).Weight = 2
.Borders(2).Weight = 2
.Borders(3).Weight = 2
.Borders(4).Weight = 2
Endwith
Endfor
Crear el gráfico.
Gráfico = WkpGxtab.ChartObjects.Add(100, 100, 200, 200).WkpGxtab.Chartobjects(1).Chart.Chartwizard(MsExcel.Worksheets("Hoja2").Range(MsExcel.Worksheets("Hoja2").Cells(4,1), MsExcel.Worksheets("Hoja2").Cells(i+2,2)),COLUMN3D,4,1,0,1,1,"","","","")
WkpGxtab.ChartObjects(1).Select
WkpGxtab.ChartObjects(1).Copy
WkpGxtab.ChartObjects(1).Chart.Axes(1).HasTitle = .T.
WkpGxtab.ChartObjects(1).Chart.Axes(1).AxisTitle.Caption = "Gráfico de Visual FoxPro"
Realice la tabla y la llene con 8 registros los cuales ya puedo ver en excel, pero en esta parte del código me aparecen 2 errores:
Crear el gráfico.
Gráfico = WkpGxtab.ChartObjects.Add(100, 100, 200, 200).WkpGxtab.Chartobjects(1).Chart.Chartwizard(MsExcel.Worksheets("Hoja2").Range(MsExcel.Worksheets("Hoja2").Cells(4,1), MsExcel.Worksheets("Hoja2").Cells(i+2,2)),COLUMN3D,4,1,0,1,1,"","","","")
WkpGxtab.ChartObjects(1).Select
WkpGxtab.ChartObjects(1).Copy
WkpGxtab.ChartObjects(1).Chart.Axes(1).HasTitle = .T.
WkpGxtab.ChartObjects(1).Chart.Axes(1).AxisTitle.Caption = "Gráfico de Visual FoxPro"
Error1 "No se encuentra la variable COLUMN3D"
Error2 "codigo de error OLE 0x800a03e:codigo de estado de COM desconocido"
De tal forma que no puedo ver el gráfico.
Saludos.
Crear el gráfico.
Gráfico = WkpGxtab.ChartObjects.Add(100, 100, 200, 200).WkpGxtab.Chartobjects(1).Chart.Chartwizard(MsExcel.Worksheets("Hoja2").Range(MsExcel.Worksheets("Hoja2").Cells(4,1), MsExcel.Worksheets("Hoja2").Cells(i+2,2)),COLUMN3D,4,1,0,1,1,"","","","")
WkpGxtab.ChartObjects(1).Select
WkpGxtab.ChartObjects(1).Copy
WkpGxtab.ChartObjects(1).Chart.Axes(1).HasTitle = .T.
WkpGxtab.ChartObjects(1).Chart.Axes(1).AxisTitle.Caption = "Gráfico de Visual FoxPro"
Error1 "No se encuentra la variable COLUMN3D"
Error2 "codigo de error OLE 0x800a03e:codigo de estado de COM desconocido"
De tal forma que no puedo ver el gráfico.
Saludos.
Incluye estas constantes en tu programa:
#Define AREA 1
#Define BARS 2
#Define COLUMNS 3
#Define LINES 4
#Define PIE 5
#Define RADAR -4151
#Define POINTXY -4169
#Define AREA3D -4098
#Define BAR3D -4099
#Define COLUMN3D -4100
#Define LINES3D -4101
#Define PIE3D -4102
#Define RUSK -4120
Sirven como parámetros para los tipos de gráficos.
Estamos hablando...
#Define AREA 1
#Define BARS 2
#Define COLUMNS 3
#Define LINES 4
#Define PIE 5
#Define RADAR -4151
#Define POINTXY -4169
#Define AREA3D -4098
#Define BAR3D -4099
#Define COLUMN3D -4100
#Define LINES3D -4101
#Define PIE3D -4102
#Define RUSK -4120
Sirven como parámetros para los tipos de gráficos.
Estamos hablando...
Coloque el código que me dijo y ya no me aparecen esos errores pero salio el siguiente error: "Código de error OLE 0x8002000e: Numero de parámetros no válido" haciendo referencia a estas lineas de código.
Gráfico = WkpGxtab.ChartObjects.Add(100, 100, 200, 200).WkpGxtab.Chartobjects(1).Chart.Chartwizard(MsExcel.Worksheets("Hoja2").Range(MsExcel.Worksheets("Hoja2").Cells(4,1), MsExcel.Worksheets("Hoja2").Cells(i+2,2)),COLUMN3D,4,1,0,1,1,"","","","")
Gracias y disculpe por las molestias
Gráfico = WkpGxtab.ChartObjects.Add(100, 100, 200, 200).WkpGxtab.Chartobjects(1).Chart.Chartwizard(MsExcel.Worksheets("Hoja2").Range(MsExcel.Worksheets("Hoja2").Cells(4,1), MsExcel.Worksheets("Hoja2").Cells(i+2,2)),COLUMN3D,4,1,0,1,1,"","","","")
Gracias y disculpe por las molestias
Veo que la cosa está más complicada de lo que pensé ¿Será posible que me envíes una copia de tu programa?
Voy a revisar detalladamente cuál es el problema...
Mi correo es [email protected]
Voy a revisar detalladamente cuál es el problema...
Mi correo es [email protected]
Le acabo de enviar los archivos a su correo.
Saludos y muchas gracias
Saludos y muchas gracias
- Compartir respuesta
1 comentario
Me gustaría si me puedes enviar el código para poder estudirarlo te lo voy a agradecer mi correo es [email protected] - martin benavidez