Resumen Generar un gráfico EXCEL con OLE

Sergio Ant. Garcia S. escribió:
>
> Tras numerosas pruebas, no he encontrado la forma de cargar con datos las
> series que usa un grafico en EXCEL que ya tengo prediseñado.
> En mi formulario tengo un OLE control que tiene un vinculo con el fichero
> XLS. Asimismo, existen una serie de parametros para cargar de datos este
> grafico desde la base de datos de la aplicacion.
>
> Por ahora, he sondeado dos opciones (sin total exito):
> a) Tener dos hojas: una con los datos que debo generar desde la B.D. cada
> vez que se modifiquen los parametros, y otra, la que contiene solo el
> grafico, que hace uso de los datos.
> * Problema: El grafico se ha diseñado para un rango fijo de datos, sin
> embargo, el grafico se va a usar para un conjunto de datos totalmente
> variable.
> --> Pregunta: ¿Es posible variar desde programacion VBasic el rango de
> celdas que cogemos cada vez?
>
> b) Tener una sola hoja con el grafico y ningun dato en el fichero XLS.
> En VBasic, haciendo uso de los metodos y propiedades de la clase Excel,
> añadimos nuevas colecciones de series y le asignamos matrices de datos que
> cargamos directamente desde la BD.
> ..........
> oleParadas.CreateLink App.Path + "\" + "paradas.xls", "GRAFICO"
> Set objExcel = oleParadas.object
> ..........

El "truco" está en indicarle el rango en la orden CreateLink. Siendo Excel(0) un OLE con
celdas, y Excel(1) el gráfico, ambos con la clase "Excel.Sheet", haz en el form_Load

    Excel(0).CreateLink App.Path & "\" & "SAMPLE.XLS!F1C1:F5C5"
    Excel(1).CreateLink App.Path & "\" & "SAMPLE.XLS!Pie"

Es buena técnica dar un nombre a los rangos de celdas, porque aunque yo he puesto arriba
"F1C1:F5C5", la "F" (por el idioma), puede ser una "L". Esto lo averiguas simplemente
abriendo Excel y mirando la nomenclatura que use (a la izquierda del contenido de la
celda), pero si le das un nombre al rango (como el "Pie" -"Tarta" en inglés) te olvidas de
la nomenclatura.

Para modificar los datos:

    Excel(Index).object.Application.Visible = True
    Excel(Index).object.Application.Show


Luego tienes el problema de actualizar los datos y volver a tu programa, para lo cual usas
unas líneas de VBA en Excel con las órdenes

AppActivate Title:="Caption de tu Form"
Application.WindowState = xlMinimized

y con esto ya tienes la base para poder hacerlo.

Esto está con Excel 8. Es posible que si usas otra versión de Excel varíe algún método.

Espero que con esto se resuelva tu problema. Un saludo.



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com