Visual Basic - Visual Basic con Excel (desesperado)

Life is soft - evento anual de software empresarial
 
Vista:

Visual Basic con Excel (desesperado)

Publicado por Raúl (1 intervención) el 03/05/2006 12:00:26
Hola a todos:

Mi problema es que no consigo crear gráficos Excel desde Visual Basic. El problema es muy extraño porque el mismo código funciona como macro en Excel pero no al hacerlo desde Visual Basic.

El caso es que desde Visual Basic voy introduciendo datos en un libro que tiene unas cuantas hojas y lo que necesito es que cada hoja represente los datos que en ella se encuentran. Sin embargo, todas las gráficas me aparecen en la misma hoja, que es la primera del libro. Utilizo el método location para crear el gráfico como un objeto en la hoja que yo le indico, pero no hace caso al parámetro "Name". No sé lo que hago mal...

Básicamente el código es:

Dim xl As Excel.Application
Dim hj As Excel.Worksheet, hjref As Excel.Worksheet
Dim ct As Excel.Chart
Dim NombreHoja as String

Set xl = New Excel.Application
xl.Workbooks.Open App.Path & "\Mi libro"

For i = 1 To xl.ActiveWorkbook.Worksheets.Count

Set hj = xl.ActiveWorkbook.Worksheets(i)
NombreHoja = hj.Name

j = 2
Do Until hj.Cells(j, 1) = ""
j = j + 1
Loop

'Creo el gráfico.
RangoDatos = "A1:B" & CStr(j - 1)
xl.ActiveWorkbook.Charts.Add
Set ct = xl.ActiveWorkbook.ActiveChart

With ct

.ChartType = xlColumnClustered
.SetSourceData Source:=hj.Range(RangoDatos), PlotBy:= _
xlColumns
.HasTitle = False
.Name = "Graf " & hj.Name
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Fecha"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Número alarmas"
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
.Axes(xlCategory, xlPrimary).CategoryType = xlCategoryScale
.HasLegend = False
.HasDataTable = False

End With

Set ct = ct.Location(Where:=xlLocationAsObject, Name:=NombreHoja)

Set hj = Nothing
Set ct = Nothing

Next i

El problema debería encontrarse en el método location, pero el mismo código funciona bien como una macro en Excel. ¿Alguna incompatibilidad entre Visual Basic y Excel?. Trabajo con Visual Basic 6 y Excel 2000. Hace una cosa muy curiosa y es que cambia el nombre del objeto Chart después de la ejecución del método Location.

Muchas gracias por vuestra ayuda.

Un saludo,

Raúl.
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