Gráfico en formulario tomando datos de una hoja

26/04/2005 - 12:38 por emilio | Informe spam
Hola a tod@s,

llevo toda la mañana peleandome con esto y no doy con la tecla, estoy
intentando mostrar un gráfico en unformulario, basado en datos de una hoja,
siguiendo las indicaciones de Hector Miguel en hilos anteriores he llegado a
mostrar un gráfico con una unica serie, sin embargo cuando intento añadir
otra serie, ya no funciona, el error se produce en
".SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound, "C2:C17"" y
dice "parámetro no valido"
Tampoco me muestra correctamente el eje de las X pues me muestra una serie
de numeros correlativos y no las fechas que hay en la columna A.
¿Alguién puede darme alguna idea?
Gracias a tod@s, el código que uso es el siguiente

Sub Actualiza()
Dim Fila As Byte, _
Col As Byte, _
Dato As Variant, _
Cc As Object

With Spreadsheet1
.Cells(1, 1) = "Fecha"
.Cells(1, 2) = "Uno"
.Cells(1, 3) = "Dos"

For Col = 2 To 4
For Fila = 8 To 25
Dato = Worksheets("Informe").Cells(Fila, Col)
.Cells(Fila - 6, Col - 1) = Dato
If Col = 2 Then
.Cells(Fila - 6, Col - 1).NumberFormat = "d-mmm-yy"
Else
.Cells(Fila - 6, Col - 1).NumberFormat = "0.00"
End If
Next
Next
End With
With ChartSpace1
.Clear
Set Cc = .Constants
Set .DataSource = Me.Spreadsheet1
.Charts.Add
With .Charts(0)
.Type = Cc.chChartTypeLine
.SetData Cc.chDimCategories, 0, "a1:a17"

.SetData Cc.chDimSeriesNames, 0, "b1"
.SeriesCollection(0).SetData Cc.chDimValues, 0, "b2:b17"
.SeriesCollection.Add
.SetData Cc.chDimSeriesNames, 0, "C1"
.SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound, "C2:C17"

End With
End With
End Sub

Preguntas similare

Leer las respuestas

#6 KL
26/04/2005 - 15:10 | Informe spam
Hola Emilio,

Mal asunto :-( La version de MSO que has usado para crear el fichero es XP y
yo solo tengo 97 y 2000. Al abrir el fichero me avisa que hay algo que
algunos objetos se van a perder y luego me faltan controles en el UserForm y
la librera de Microsoft Office XP Web Components a la que no consigo
encontrar un sustituto en MSO2000 (probablemente no exista). Por lo tanto,
lo siento, pero..., no puedo depurar tu codigo. He intentado seguir la
logica de tu macro y no consigo encontrar ningun fallo a no ser que alguna
de las constantes que usas no sea compatible con el tipo de grafico que
usas.

Un saludo,
KL

"Emilio" wrote in message
news:
Grcias KL, va para allá, en cuanto al otro mensaje, creo que no van por
ahí
los tiros

Muchisímas gracias
Saludos
Emilio

"KL" escribió:

quitando NOSPAM y PLEASE

KL


"Emilio" wrote in message
news:
> Si claro, pero ¿a que cuenta te lo mando?, no veo ninguna
>
> Muchisimas gracias
>
> Saludos a
> Emilio
>
> "KL" escribió:
>
>> Hola Emilio,
>>
>> Esto tiene mucho curro :-) Podrias enviar el fichero a mi correo
>> electronico
>> para no tener que reconstruir todo el libro.
>>
>> Saludos,
>> KL
>>
>> "emilio" wrote in message
>> news:
>> > Hola a ,
>> >
>> > llevo toda la mañana peleandome con esto y no doy con la tecla,
>> > estoy
>> > intentando mostrar un gráfico en unformulario, basado en datos de
>> > una
>> > hoja,
>> > siguiendo las indicaciones de Hector Miguel en hilos anteriores he
>> > llegado
>> > a
>> > mostrar un gráfico con una unica serie, sin embargo cuando intento
>> > añadir
>> > otra serie, ya no funciona, el error se produce en
>> > ".SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound,
>> > "C2:C17""
>> > y
>> > dice "parámetro no valido"
>> > Tampoco me muestra correctamente el eje de las X pues me muestra una
>> > serie
>> > de numeros correlativos y no las fechas que hay en la columna A.
>> > ¿Alguién puede darme alguna idea?
>> > Gracias a , el código que uso es el siguiente
>> >
>> > Sub Actualiza()
>> > Dim Fila As Byte, _
>> > Col As Byte, _
>> > Dato As Variant, _
>> > Cc As Object
>> >
>> > With Spreadsheet1
>> > .Cells(1, 1) = "Fecha"
>> > .Cells(1, 2) = "Uno"
>> > .Cells(1, 3) = "Dos"
>> >
>> > For Col = 2 To 4
>> > For Fila = 8 To 25
>> > Dato = Worksheets("Informe").Cells(Fila, Col)
>> > .Cells(Fila - 6, Col - 1) = Dato
>> > If Col = 2 Then
>> > .Cells(Fila - 6, Col - 1).NumberFormat = "d-mmm-yy"
>> > Else
>> > .Cells(Fila - 6, Col - 1).NumberFormat = "0.00"
>> > End If
>> > Next
>> > Next
>> > End With
>> > With ChartSpace1
>> > .Clear
>> > Set Cc = .Constants
>> > Set .DataSource = Me.Spreadsheet1
>> > .Charts.Add
>> > With .Charts(0)
>> > .Type = Cc.chChartTypeLine
>> > .SetData Cc.chDimCategories, 0, "a1:a17"
>> >
>> > .SetData Cc.chDimSeriesNames, 0, "b1"
>> > .SeriesCollection(0).SetData Cc.chDimValues, 0, "b2:b17"
>> > .SeriesCollection.Add
>> > .SetData Cc.chDimSeriesNames, 0, "C1"
>> > .SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound,
>> > "C2:C17"
>> >
>> > End With
>> > End With
>> > End Sub
>>
>>
>>



Respuesta Responder a este mensaje
#7 Emilio
26/04/2005 - 15:33 | Informe spam
Gracias KL
No te preocupes, que le vamos a hacer :( no podemos luchar contra los
elementos.
Ese es el problema que no veo nada que sea especialmente susceptible de ser
erroneo y en la ayuda no soy capaz de ver nada que me saque de apuros.
Esperemos a ver si alguién tiene experiencia con este tema y nos aclara
donde esta el fallo

Muchas gracias de nuevo

Saludos a
Emilio

"KL" escribió:

Hola Emilio,

Mal asunto :-( La version de MSO que has usado para crear el fichero es XP y
yo solo tengo 97 y 2000. Al abrir el fichero me avisa que hay algo que
algunos objetos se van a perder y luego me faltan controles en el UserForm y
la librera de Microsoft Office XP Web Components a la que no consigo
encontrar un sustituto en MSO2000 (probablemente no exista). Por lo tanto,
lo siento, pero..., no puedo depurar tu codigo. He intentado seguir la
logica de tu macro y no consigo encontrar ningun fallo a no ser que alguna
de las constantes que usas no sea compatible con el tipo de grafico que
usas.

Un saludo,
KL

"Emilio" wrote in message
news:
> Grcias KL, va para allá, en cuanto al otro mensaje, creo que no van por
> ahí
> los tiros
>
> Muchisímas gracias
> Saludos
> Emilio
>
> "KL" escribió:
>
>> quitando NOSPAM y PLEASE
>>
>> KL
>>
>>
>> "Emilio" wrote in message
>> news:
>> > Si claro, pero ¿a que cuenta te lo mando?, no veo ninguna
>> >
>> > Muchisimas gracias
>> >
>> > Saludos a
>> > Emilio
>> >
>> > "KL" escribió:
>> >
>> >> Hola Emilio,
>> >>
>> >> Esto tiene mucho curro :-) Podrias enviar el fichero a mi correo
>> >> electronico
>> >> para no tener que reconstruir todo el libro.
>> >>
>> >> Saludos,
>> >> KL
>> >>
>> >> "emilio" wrote in message
>> >> news:
>> >> > Hola a ,
>> >> >
>> >> > llevo toda la mañana peleandome con esto y no doy con la tecla,
>> >> > estoy
>> >> > intentando mostrar un gráfico en unformulario, basado en datos de
>> >> > una
>> >> > hoja,
>> >> > siguiendo las indicaciones de Hector Miguel en hilos anteriores he
>> >> > llegado
>> >> > a
>> >> > mostrar un gráfico con una unica serie, sin embargo cuando intento
>> >> > añadir
>> >> > otra serie, ya no funciona, el error se produce en
>> >> > ".SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound,
>> >> > "C2:C17""
>> >> > y
>> >> > dice "parámetro no valido"
>> >> > Tampoco me muestra correctamente el eje de las X pues me muestra una
>> >> > serie
>> >> > de numeros correlativos y no las fechas que hay en la columna A.
>> >> > ¿Alguién puede darme alguna idea?
>> >> > Gracias a , el código que uso es el siguiente
>> >> >
>> >> > Sub Actualiza()
>> >> > Dim Fila As Byte, _
>> >> > Col As Byte, _
>> >> > Dato As Variant, _
>> >> > Cc As Object
>> >> >
>> >> > With Spreadsheet1
>> >> > .Cells(1, 1) = "Fecha"
>> >> > .Cells(1, 2) = "Uno"
>> >> > .Cells(1, 3) = "Dos"
>> >> >
>> >> > For Col = 2 To 4
>> >> > For Fila = 8 To 25
>> >> > Dato = Worksheets("Informe").Cells(Fila, Col)
>> >> > .Cells(Fila - 6, Col - 1) = Dato
>> >> > If Col = 2 Then
>> >> > .Cells(Fila - 6, Col - 1).NumberFormat = "d-mmm-yy"
>> >> > Else
>> >> > .Cells(Fila - 6, Col - 1).NumberFormat = "0.00"
>> >> > End If
>> >> > Next
>> >> > Next
>> >> > End With
>> >> > With ChartSpace1
>> >> > .Clear
>> >> > Set Cc = .Constants
>> >> > Set .DataSource = Me.Spreadsheet1
>> >> > .Charts.Add
>> >> > With .Charts(0)
>> >> > .Type = Cc.chChartTypeLine
>> >> > .SetData Cc.chDimCategories, 0, "a1:a17"
>> >> >
>> >> > .SetData Cc.chDimSeriesNames, 0, "b1"
>> >> > .SeriesCollection(0).SetData Cc.chDimValues, 0, "b2:b17"
>> >> > .SeriesCollection.Add
>> >> > .SetData Cc.chDimSeriesNames, 0, "C1"
>> >> > .SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound,
>> >> > "C2:C17"
>> >> >
>> >> > End With
>> >> > End With
>> >> > End Sub
>> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
#8 Héctor Miguel
27/04/2005 - 10:20 | Informe spam
hola, chicos !

Emilio escribio en el mensaje ...
... no veo nada... especialmente susceptible de ser erroneo y en la ayuda... nada que me saque de apuros.



de tu mensaje 'original'... voy a [tratar de] 'exponer' las lineas/causas y [posibles] 'soluciones' del 'fallo' :-(
el 'manejo' del objeto 'ChartSpace1' es el que tiene [algunas] lineas que necesitan modificarse/moverse...

si cualquier duda [o te dejo mas 'enredado'] :)) ... comentas?
saludos,
hector.
__ 'error' 1 __
' ... intento añadir otra serie... error... en:


.SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound, "C2:C17"... dice "parametro no valido"
__ 'error' 2 __
' ... el eje de las X pues me muestra una serie de numeros correlativos y no las fechas que hay en la columna A'



1.- podrias establecer n_titulos para n_series desde la primera instruccion -> .SetData Cc.chDimSeriesNames, 0, "b1"
si en lugar de 'usar' una sola celda [b1] utilizas el rango 'necesario' [tomado del objeto 'SpreadSheet1'] p.e.
.SetData Cc.chDimSeriesNames, 0, "b1:c1" [para el caso de 'graficar' datos de las columnas 'B' y 'C']
con lo cual, la siguiente 'asignacion' de sus valores seria 'similar' [por no decir la misma] a .SeriesCollection(0)
2.- si utilizas la primera instruccion para el titulo de SOLO la primer serie...
a) SI seria necesario utilizar .SeriesCollection.Add [por cada 'nueva' serie] y...
b) establecer [cada] 'nuevo titulo' para [cada] 'nueva serie'... debe quedar 'emparentado' NO al objeto 'ChartSpace1'
[que es al que se esta haciendo 'referencia' como primera instancia dentro del bloque 'With'] CAMBIA...
de: -> .SetData Cc.chDimSeriesNames, 0, "c1"
a: -> .SeriesCollection(1).SetData Cc.chDimSeriesNames, 0, "c1"
=> con alguna de las opciones anteriores... podras 'corregir' el error del 'parametro no valido' ;)

3.- para el caso de que las categorias no muestran los textos de su 'origen' [el formato de fecha en el SpreadSheet1]...
DEBERAS 'invertir el orden' en el que se 'asignan' los origenes de las siguientes lineas...
PRIMERO establece los nombres de las series: -> .SetData Cc.chDimSeriesNames, 0, "b1" <- o... "b1:c1"
DESPUES estableces las categorias: -> .SetData Cc.chDimCategories, 0, "a1:a17" <-
FINALMENTE vas 'llenando' los valores a graficar

[como veras... 'trabajar' con los office-web-components... tiene sus 'especiales'] ;)
Respuesta Responder a este mensaje
#9 Emilio
27/04/2005 - 19:26 | Informe spam
Muchas gracias Héctor Miguel
ya, ya veo los OWC, son muy especiales, en mi tierra diríamos algo mas
fuerte que especiales ;-)

Lastima que no he visto tu mensaje hasta ahora, mañana me meto con ello en
el curro y te cuento el resultado.

Gracias de nuevo

Saludos a desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

"Héctor Miguel" escribió en el mensaje
news:%
hola, chicos !

Emilio escribio en el mensaje ...
... no veo nada... especialmente susceptible de ser erroneo y en la
ayuda... nada que me saque de apuros.



de tu mensaje 'original'... voy a [tratar de] 'exponer' las lineas/causas
y [posibles] 'soluciones' del 'fallo' :-(
el 'manejo' del objeto 'ChartSpace1' es el que tiene [algunas] lineas que
necesitan modificarse/moverse...

si cualquier duda [o te dejo mas 'enredado'] :)) ... comentas?
saludos,
hector.
__ 'error' 1 __
' ... intento añadir otra serie... error... en:


.SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound,
"C2:C17"... dice "parametro no valido"
__ 'error' 2 __
' ... el eje de las X pues me muestra una serie de numeros correlativos y
no las fechas que hay en la columna A'



1.- podrias establecer n_titulos para n_series desde la primera
instruccion -> .SetData Cc.chDimSeriesNames, 0, "b1"
si en lugar de 'usar' una sola celda [b1] utilizas el rango
'necesario' [tomado del objeto 'SpreadSheet1'] p.e.
.SetData Cc.chDimSeriesNames, 0, "b1:c1" [para el caso de
'graficar' datos de las columnas 'B' y 'C']
con lo cual, la siguiente 'asignacion' de sus valores seria 'similar'
[por no decir la misma] a .SeriesCollection(0)
[de lo contrario]...
2.- si utilizas la primera instruccion para el titulo de SOLO la primer
serie...
a) SI seria necesario utilizar .SeriesCollection.Add [por cada
'nueva' serie] y...
b) establecer [cada] 'nuevo titulo' para [cada] 'nueva serie'... debe
quedar 'emparentado' NO al objeto 'ChartSpace1'
[que es al que se esta haciendo 'referencia' como primera
instancia dentro del bloque 'With'] CAMBIA...
de: -> .SetData Cc.chDimSeriesNames, 0, "c1"
a: -> .SeriesCollection(1).SetData Cc.chDimSeriesNames, 0, "c1"
=> con alguna de las opciones anteriores... podras 'corregir' el error del
'parametro no valido' ;)

3.- para el caso de que las categorias no muestran los textos de su
'origen' [el formato de fecha en el SpreadSheet1]...
DEBERAS 'invertir el orden' en el que se 'asignan' los origenes de las
siguientes lineas...
PRIMERO establece los nombres de las series: -> .SetData
Cc.chDimSeriesNames, 0, "b1" <- o... "b1:c1"
DESPUES estableces las categorias: -> .SetData Cc.chDimCategories, 0,
"a1:a17" <-
FINALMENTE vas 'llenando' los valores a graficar

[como veras... 'trabajar' con los office-web-components... tiene sus
'especiales'] ;)

Respuesta Responder a este mensaje
#10 Emilio
28/04/2005 - 09:45 | Informe spam
Perfecto como siempre, resuelto el problema, aquí va el resultado para que
quede constancia

Muchas gracias Hector Miguel :-))

Sub Actualiza()
Dim Fila As Byte, _
Col As Byte, _
Dato As Variant, _
Cc As Object

With Spreadsheet1
.Cells(1, 1) = "Fecha"
.Cells(1, 2) = "Uno"
.Cells(1, 3) = "Dos"

For Col = 2 To 4
For Fila = 8 To 25
Dato = Worksheets("Informe").Cells(Fila, Col)
.Cells(Fila - 6, Col - 1) = Dato
If Col = 2 Then
.Cells(Fila - 6, Col - 1).NumberFormat = "d-mmm-yy"
Else
.Cells(Fila - 6, Col - 1).NumberFormat = "0.00"
End If
Next
Next
End With
With ChartSpace1
.Clear
Set Cc = .Constants
Set .DataSource = Me.Spreadsheet1
.Charts.Add
With .Charts(0)
' tipo de gráfico
.Type = Cc.chChartTypeLine
' añado los nombres de las series
.SetData Cc.chDimSeriesNames, 0, "b1:c1"
' añado las distintas series
.SeriesCollection(0).SetData Cc.chDimValues, 0, "b2:b17"

.SeriesCollection.Add
.SeriesCollection(1).SetData Cc.chDimSeriesNames, 0, "c1"
.SeriesCollection(1).SetData Cc.chDimValues, 0, "c2:c17"
' rango del eje X
.SetData Cc.chDimCategories, 0, "a2:a17"

End With
End With
End Sub

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"Héctor Miguel" escribió en el mensaje
news:%
hola, chicos !

> Emilio escribio en el mensaje ...
> ... no veo nada... especialmente susceptible de ser erroneo y en la


ayuda... nada que me saque de apuros.

de tu mensaje 'original'... voy a [tratar de] 'exponer' las lineas/causas


y [posibles] 'soluciones' del 'fallo' :-(
el 'manejo' del objeto 'ChartSpace1' es el que tiene [algunas] lineas que


necesitan modificarse/moverse...

si cualquier duda [o te dejo mas 'enredado'] :)) ... comentas?
saludos,
hector.
__ 'error' 1 __
> ' ... intento añadir otra serie... error... en:
.SeriesCollection(1).SetData Cc.chDimValues, Cc.chDataBound,


"C2:C17"... dice "parametro no valido"
__ 'error' 2 __
> ' ... el eje de las X pues me muestra una serie de numeros correlativos


y no las fechas que hay en la columna A'

1.- podrias establecer n_titulos para n_series desde la primera


instruccion -> .SetData Cc.chDimSeriesNames, 0, "b1"
si en lugar de 'usar' una sola celda [b1] utilizas el rango


'necesario' [tomado del objeto 'SpreadSheet1'] p.e.
.SetData Cc.chDimSeriesNames, 0, "b1:c1" [para el caso de


'graficar' datos de las columnas 'B' y 'C']
con lo cual, la siguiente 'asignacion' de sus valores seria 'similar'


[por no decir la misma] a .SeriesCollection(0)
[de lo contrario]...
2.- si utilizas la primera instruccion para el titulo de SOLO la primer


serie...
a) SI seria necesario utilizar .SeriesCollection.Add [por cada


'nueva' serie] y...
b) establecer [cada] 'nuevo titulo' para [cada] 'nueva serie'... debe


quedar 'emparentado' NO al objeto 'ChartSpace1'
[que es al que se esta haciendo 'referencia' como primera


instancia dentro del bloque 'With'] CAMBIA...
de: -> .SetData Cc.chDimSeriesNames, 0, "c1"
a: -> .SeriesCollection(1).SetData Cc.chDimSeriesNames, 0, "c1"
=> con alguna de las opciones anteriores... podras 'corregir' el error del


'parametro no valido' ;)

3.- para el caso de que las categorias no muestran los textos de su


'origen' [el formato de fecha en el SpreadSheet1]...
DEBERAS 'invertir el orden' en el que se 'asignan' los origenes de


las siguientes lineas...
PRIMERO establece los nombres de las series: -> .SetData


Cc.chDimSeriesNames, 0, "b1" <- o... "b1:c1"
DESPUES estableces las categorias: -> .SetData Cc.chDimCategories, 0,


"a1:a17" <-
FINALMENTE vas 'llenando' los valores a graficar

[como veras... 'trabajar' con los office-web-components... tiene sus


'especiales'] ;)


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida