Ayuda Graph 9 +vba +superficies (no me entero)

19/05/2004 - 17:58 por NOSPAM-Hatilaus | Informe spam
Hola a todos. Necesitaría una ayuda con este problema que planteo (y que no
sé por donde coger).

Necesito crear un gráfico en Excel (o en un Fom de excel) tipo 3d. (estoy
pensando en un tipo "contorno", como los mapas de curvas de nivel).

El problema se centra en que no sé como pasar los d<atos al gráfico. Y me
explico porqué.
- Hay unos cuantos "subs" en módulos "Bas", que generan una matriz con los
datos (si, como si fueran las "celdas" de excel, pero es una matriz).
- No quiero pasar esta matriz valor por valor a celdas porque puede ser muy
lento (voy a probar de todos modos), y quisiera pasar estas "series" al
objeto grácio directamente, pero no se como.
- Estoy hablando de una matriz de unos 200x200 valores formato "double".

- En el caso de "2D" lo había conseguido insertando un objeto de Vb6
(MSCHART) en un form de Excel y le pso un "vector" con los datos, y
funciona. Pero no consigo insertar el objeto Graph (o lo que sea que utiliza
Excel cuando se selecciona crear un gráfico),

Si alguien tiene una idea... pues muchas gracias (especialmente si la
cuenta, claro, je je).

Un saludo.
"Atribulado"
 

Leer las respuestas

#1 Fernando Arroyo
20/05/2004 - 13:39 | Informe spam
El siguiente código es un ejemplo en el que se crea una pequeña matriz, se vuelca a Hoja1 y se crea un gráfico de superficie basado en los datos:


Sub prueba()
Dim chO As ChartObject
Dim mtr(0 To 3, 0 To 3) As Double, i As Byte, j As Byte

'Llenar la matriz y volcarla a la hoja
For i = 0 To 3
For j = 0 To 3
mtr(i, j) = i * j
Next
Next
Worksheets("Hoja1").Range("A1:D4").Value = mtr

'Crear el gráfico
Set chO = Worksheets("Hoja1").ChartObjects.Add(0, 0, 200, 100)
With chO.Chart
.SetSourceData Source:=Worksheets("Hoja1").Range("A1").CurrentRegion, PlotBy:=xlColumns
.HasTitle = False
.Axes(xlCategory).HasTitle = False
.Axes(xlValue).HasTitle = False
.HasLegend = False
.ChartType = xlSurface
'Guardar el gráfico como GIF
.Export Filename:="c:\prueba.gif", FilterName:="GIF"
End With

chO.Delete 'Borrar el gráfico
Worksheets("Hoja1").Range("A1:D4").ClearContents 'Borrar las celdas

Set chO = Nothing
End Sub


El código guarda el gráfico en forma de GIF para luego poder importarlo desde un formulario, lo cual se tendría que hacer con una instrucción parecida a :

Me.NombreDelControlImage.Picture = LoadPicture("C:\prueba.gif")

También sería posible copiar y pegar la imagen sin necesidad de guardarla en un archivo, pero para esto son necesarias unas cuantas clases, y ahora mismo no las tengo a mano. Si estás interesado, podría darte el link, suponiendo que lo encuentre :-)
Un saludo.


Fernando Arroyo
MS MVP - Excel



escribió en el mensaje news:40ab8449$
Hola a todos. Necesitaría una ayuda con este problema que planteo (y que no
sé por donde coger).

Necesito crear un gráfico en Excel (o en un Fom de excel) tipo 3d. (estoy
pensando en un tipo "contorno", como los mapas de curvas de nivel).

El problema se centra en que no sé como pasar los d<atos al gráfico. Y me
explico porqué.
- Hay unos cuantos "subs" en módulos "Bas", que generan una matriz con los
datos (si, como si fueran las "celdas" de excel, pero es una matriz).
- No quiero pasar esta matriz valor por valor a celdas porque puede ser muy
lento (voy a probar de todos modos), y quisiera pasar estas "series" al
objeto grácio directamente, pero no se como.
- Estoy hablando de una matriz de unos 200x200 valores formato "double".

- En el caso de "2D" lo había conseguido insertando un objeto de Vb6
(MSCHART) en un form de Excel y le pso un "vector" con los datos, y
funciona. Pero no consigo insertar el objeto Graph (o lo que sea que utiliza
Excel cuando se selecciona crear un gráfico),

Si alguien tiene una idea... pues muchas gracias (especialmente si la
cuenta, claro, je je).

Un saludo.
"Atribulado"

Preguntas similares