Help Excel Chart Axes

Hello,

maybe someone can help me? I would like to set a min and max value for the axes of the diagram that will be displayed in excel.

However, in Xojo I get an OLE error message.

Var f As FolderItem = SpecialFolder.Desktop.Child(“Datei.xlsx”)
excel.workbooks.Open(f.NativePath)
excel.visible = true

excel.Worksheets(“Dosierung”).ChartObjects(1).Left = 10
excel.Worksheets(“Dosierung”).ChartObjects(1).top = 10
excel.Worksheets(“Dosierung”).ChartObjects(1).Activate
excel.Worksheets(“Dosierung”).ChartObjects(1).Axes(office.xlCategory).MinimumScale = 10

The code works except for the last command.

Thanks in advance

Hello Norbert,

Another way to have this work is to use the ActiveChart command since the previous line of code has Activate.

Excel.ActiveChart.Axes(Office.xlValue).MinimumScale = 270

Here is an example where I used a shortened version of the ChartObjects code:

Var Excel As New ExcelApplication
excel.visible = True //Show Excel
excel.workbooks.add // Add a workbook for our data

//Add data to excel workbook
excel.range("A1").value = "Jan 07"
excel.range("A2").value = "Jan 14"
excel.range("A3").value = "Jan 21"
excel.range("A4").value = "Jan 28"
excel.range("A5").value = "Feb 04"
excel.range("A6").value = "Feb 11"

excel.range("B1").value = "298.8"
excel.range("B2").value = "296.6"
excel.range("B3").value = "291"
excel.range("B4").value = "288.1"
excel.range("B5").value = "288.2"
excel.range("B6").value = "286.2"

excel.range("C1").value = "5.00"
excel.range("C2").value = "6.10"
excel.range("C3").value = "7.20"
excel.range("C4").value = "8.30"
excel.range("C5").value = "9.40"
excel.range("C6").value = "10.50"

excel.Charts.add //add the chart
Excel.Charts(1).Select_
Excel.Charts(1).Activate
'excel.charts.Select_ //select the chart

excel.ActiveChart.SetSourceData Excel.Sheets("Sheet1").Range("A1:C6") // Select the data Range
excel.ActiveChart.ChartType = office.xlXYScatterLinesNoMarkers   //Choose the Chart Type
excel.activechart.PlotBy = office.xlvalue //Plot the data by columns

excel.activechart.SeriesCollection(2).Select_ //Select Series 2
excel.Activechart.SeriesCollection(2).AxisGroup = 2  //Set series 2 to second axis
excel.activechart.axes(office.xlvalue, office.xlprimary).HasTitle = True
excel.activechart.axes(office.xlvalue, office.xlprimary).axistitle.characters.Text = "Gasoline Price"
excel.activechart.axes(office.xlcategory, office.xlprimary).HasTitle = True
excel.activechart.axes(office.xlcategory, office.xlprimary).axistitle.characters.Text = "Dates"
excel.activechart.axes(office.xlvalue, office.xlSecondary).HasTitle = True
excel.activechart.axes(office.xlvalue, office.xlSecondary).axistitle.characters.Text = "Door Price"
excel.activechart.SeriesCollection(1).name = "Gasoline"
excel.activechart.SeriesCollection(1).ChartType = office.xlXYScatterLines
excel.activechart.SeriesCollection(2).name = "Door"
excel.activechart.SeriesCollection(2).Select_
excel.activechart.SeriesCollection(2).ChartType = office.xlXYScatterSmoothNoMarkers

Excel.Charts(1).Axes(Office.xlValue).MinimumScale = 270 //This works on my machine

Exception err  //Report errors
  MessageDialog.Show err.message

Thank you Eugene,

I found a solution with your template.

var excel as new ExcelApplication
excel.workbooks.Open("D:\BA_20978_70_8.xlsx")

excel.Worksheets("Dosierungen KG (A)").ChartObjects(1).Select_
excel.Worksheets("Dosierungen KG (A)").ChartObjects(1).Activate

excel.activechart.SeriesCollection(1).Select_
excel.activechart.Axes(Office.xlValue).MinimumScale = 200


1 Like