Visual Basic - excel y visual basic 6.0

Life is soft - evento anual de software empresarial
 
Vista:

excel y visual basic 6.0

Publicado por pedro hernandez (1 intervención) el 15/12/2005 23:54:38
AMIGOS:

TENGO UN PROBLEMA Y SE LOS DEJO A VER SI ME PUEDEN AYUDAR A RESOLVERLO

ESTOY DESARROLLANDO UNA APLICACION EN VISUAL BASIC, QUE NECESITA GRAFICAR LOS DATOS ALMACENADOS EN UN ARCHIVO DE EXCEL, DE LA MANERA MAS RAPIDA POSIBLE, YA QUE EL ARCHIVO DE EXCEL POSEE NO MENOS DE 8.000 REGISTROS, QUISIERA SABER COMO PUEDO HACER PARA CONECTAR UN GRAFICO DE TIPO CHARTS, EN SU PARTE DE HOJA PARA IMPORTAR LOS DATOS DESDE EXCEL POR MEDIO DE CODIGO Y SIN USAR UNA ESTRUCTURA REPETITIVA.

AGRADEZCO LA INFORMACION QUE ME PUEDAN DISPENSAR AL RESPECTO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:excel y visual basic 6.0

Publicado por Raúl Santiago (178 intervenciones) el 20/12/2005 23:52:20
Y porque no haces la grafica de excel y luego la copias como imagen, con un msflexgrid que llamo flex1 y un boton va un ejemplo, alguna ves lo pasaron y sirve muy bien, espero te sirva

Private Sub Command1_Click()
' Captura de errores
On Error Resume Next

Dim objExcel As Object
Dim objLibro As Object

' Hace una referencia a la aplicación Excel
Set objExcel = GetObject(, "Excel.Application")

' Si nos da error significa que Excel NO esta en ejecucion
If Err.Number = 429 Then
Err.Clear
' Creamos una NUEVA instancia de Excel
Set objExcel = CreateObject("Excel.Application")
End If

' Mostrar el Excel
'objExcel.Visible = True

' Crear nuevo Libro
objExcel.Workbooks.Add

Set objLibro = objExcel.Worksheets(1)

' Enviar encabezados
Flex1.Row = 0
For i = 1 To Flex1.Cols - 1
Flex1.Col = i
objLibro.Range(Chr(65 + i) & "1").Value = Flex1
Next i

Flex1.Col = 0
For i = 1 To Flex1.Rows - 1
Flex1.Row = i
objLibro.Range("A" & i + 1).Value = Flex1
Next i

' Enviar datos
For i = 1 To Flex1.Rows - 1
Flex1.Row = i
For z = 1 To Flex1.Cols - 1
Flex1.Col = z
objLibro.Range(Chr(65 + z) & i + 1).Value = CDbl(Flex1)
Next z
Next i

Rango = "A1:" & Chr(64 + Flex1.Cols) & Flex1.Rows

' Seleccionar los datos
objLibro.Range(Rango).Select

objExcel.Charts.Add
objExcel.ActiveChart.ChartType = 51
objExcel.ActiveChart.Location 2, "Hoja1"
objExcel.ActiveChart.HasLegend = True
objExcel.ActiveChart.Legend.Select
objExcel.ActiveSheet.ChartObjects("Gráfico 1").Activate
objExcel.ActiveChart.ChartArea.Select
objExcel.ActiveChart.ChartArea.Copy

Picture1.Picture = Clipboard.GetData

objLibro.SaveAs "c:\temporal123.xls"

objExcel.quit

Do
Kill "c:\temporal123.xls"
Loop Until Dir("c:\temporal123.xls") = ""

MsgBox "Listo"
End Sub

Private Sub Flex1_Click()
Flex1 = InputBox("Escribe el Numero")
End Sub

Public Function NumeroAleatorio(Minimo As Long, Maximo As Long) As Long
Randomize Timer
NumeroAleatorio = Int((Maximo - Minimo + 1) * Rnd(Timer) + Minimo)
End Function

Private Sub Form_Load()
Flex1.Col = 1
Flex1.Row = 0
Flex1 = "Comida"
Flex1.Col = 2
Flex1 = "Transporte"
Flex1.Col = 3
Flex1 = "Alojamiento"

Flex1.Col = 0
Flex1.Row = 1
Flex1 = "Enero"
Flex1.Row = 2
Flex1 = "Febrero"
Flex1.Row = 3
Flex1 = "Marzo"
Flex1.Row = 4
Flex1 = "Abril"

' Llenar de Datos al Azar
For i = 1 To 3
Flex1.Col = i

For z = 1 To 4
Flex1.Row = z

Flex1 = NumeroAleatorio(10, 50)
Next z

Next i
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar