fredag den 14. oktober 2016

Makro i regneark: Opret et diagram

Jeg har tidligere beskrevet hvordan de importerede data kan vises i et diagram. Det kan du læse om her: https://libreofficedk.blogspot.dk/2016/10/indlse-en-fil-linje-for-linje-makro.html

Men det kunne være spændende hvis vi kan oprette diagrammet "on the fly". Formålet er naturligvis at vi senere vil kombinere det med vores viden fra denne artikel https://libreofficedk.blogspot.dk/2016/10/vi-vil-gerne-et-skridt-videre-med-det.html hvor vi fandt ud af hvor mange rækker der er i regnearket.

Men først skal vi finde ud af hvordan vi opretter et diagram. Makroen er herunder, men jeg vil ikke gå i detaljer.

Læs gerne kommentarerne i koden:


REM  *****  BASIC  *****
Sub CreateChart

  sName = "Statistik-diagram"
    'Dataområdet (som vi senere laver om):
  sDataRng = "A1:B101"

  oSheets = thisComponent.Sheets
  oSheet = oSheets.getByName("Statistik")
  oAddress = oSheet.getCellRangeByName( sDataRng ).getRangeAddress()
  oCharts = oSheet.getCharts()
  If NOT oCharts.hasByName(sName) Then
    oRect       = createObject("com.sun.star.awt.Rectangle")


    'Placering:
    oRect.X     = 10000    '1/100mm
    oRect.Y     = 1000


    'Størrelse:
    oRect.width = 20000
    oRect.Height= 10000

    ' True betyder kolonne overskrifter.
    ' False betyder ingen række-overskrifter.
    oCharts.addNewByName(sName, oRect, Array(oAddress), True, False)
  End If

  oChart = oCharts.getByName( sName )
  oChart.setRanges(Array(oAddress))
  oChart.HasRowHeaders=True
  oChart.HasColumnHeaders=True
  oChartDoc = oChart.getEmbeddedObject()

    'Her danner vi titlen:
  oTitle = oChartDoc.getTitle()
  oTitle.String = "Nyhedsbrevet"

    'Opret diagrammet:
  oDiagram = oChartDoc.createInstance( "com.sun.star.chart.LineDiagram" )    'Linjediagram
  oChartDoc.setDiagram( oDiagram )
  oDiagram = oChartDoc.getDiagram()
  oDiagram.DataRowSource = com.sun.star.chart.ChartDataRowSource.COLUMNS    'Data i kolonner
End Sub