🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Calc: Balkenfarbe in einem Diagramm per Makro ändern

Alles zur Programmierung im LibreOffice.
Caffeelix
Beiträge: 11
Registriert: Fr 17. Jan 2014, 20:28

Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von Caffeelix » Do 24. Apr 2014, 19:51

Aus Calc-Tabellen möchte ich per Makro Balkendiagramme erstellen:

Code: Alles auswählen

  Diagramme = Docum.Sheets(0).Charts
  RangeAddress(0).StartColumn = Sel.StartColumn
  RangeAddress(0).StartRow = Sel.StartRow
  RangeAddress(0).EndColumn = Sel.EndColumn
  RangeAddress(0).EndRow = Sel.EndRow
  Diagramme.addNewByName("MyChart", Rect, RangeAddress(), True, True)
  Diagramm = Diagramme.getByName("MyChart").EmbeddedObject
  Diagramm.Diagram.Stacked = true
  Diagramm.Diagram.Vertical = true
  Diagramm.HasLegend = false
Soweit funktioniert das. Jetzt möchte ich die Balken(stücke) noch mit anderen als den Standardfarben füllen.
Dafür finde ich aber weder den passenden Befehl noch eine Dokumentation, aus der der Befehl hervorgeht. Die bisher benutzten Befehle habe ich hier gefunden:
https://wiki.openoffice.org/wiki/Docume ... _of_Charts

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von F3K Total » Do 24. Apr 2014, 22:03

Jo, das geht z.B. so:

Code: Alles auswählen

    oembeddedObject = thiscomponent.sheets(0).charts(0).embeddedObject'erstes Diagramm auf der ersten Tabelle
    odiagram = oembeddedObject.diagram
    oDataSequences = oembeddedObject.UsedData.DataSequences
    for i = 0 to ubound (oDataSequences)
       oDataRowProperties = odiagram.getDataRowProperties(i)
       C = INT(255/(ubound (oDataSequences)+1)*(i+1))'Rot-Ton berechnen
       oDataRowProperties.FillColor = RGB(C,0,0)'Farbe setzen
       oDataRowProperties.FillStyle = 1
       wait 100
    next i
anbei ein Beispiel
HTH R
Dateianhänge
Chartcolor.ods
(57.68 KiB) 266-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Caffeelix
Beiträge: 11
Registriert: Fr 17. Jan 2014, 20:28

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von Caffeelix » Fr 25. Apr 2014, 14:19

Danke!!! :-) Den Vorschlag konnte ich prima in mein Programm übernehmen:

Code: Alles auswählen

  Diagramme = Docum.Sheets(0).Charts
  RangeAddress(0).StartColumn = Sel.StartColumn
  RangeAddress(0).StartRow = Sel.StartRow
  RangeAddress(0).EndColumn = Sel.EndColumn
  RangeAddress(0).EndRow = Sel.EndRow
  Diagramme.addNewByName("MyChart", Rect, RangeAddress(), True, True)
  Diagramm = Diagramme.getByName("MyChart").EmbeddedObject
  Diagramm.Diagram.Stacked = true
  Diagramm.Diagram.Vertical = true
  Diagramm.HasLegend = false
  DatenReihenEigenschaft = Diagramm.diagram.getDataRowProperties(0)
  DatenReihenEigenschaft.FillColor = RGB(255,255,255) 'Damit der erste Teil-Balken jeweils unsichtbar ist
  DatenReihenEigenschaft.FillStyle = 1
  DatenReihenEigenschaft = Diagramm.diagram.getDataRowProperties(1)
  DatenReihenEigenschaft.FillColor = RGB(0,0,255)
  DatenReihenEigenschaft.FillStyle = 1
  DatenReihenEigenschaft = Diagramm.diagram.getDataRowProperties(2)
  DatenReihenEigenschaft.FillColor = RGB(255,0,0)    
  DatenReihenEigenschaft.FillStyle = 1
Jetzt bleibt für mich de Frage, ob es irgendwo eine vollständige und systematische Übersicht gibt, wo man alle Befehle, Eigenschaften etc. nachsehen kann. Die habe ich nämlich leider nirgends gefunden.
Zum Beispiel sollen die Balken auch noch einen schwarzen Rand bekommen - und auch die Suchbegriffe diagram, getDataRowProperties und fillstyle haben mich nicht in ein entsprechendes Nachschlagewerk geführt.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von F3K Total » Fr 25. Apr 2014, 20:22

Hi,
was du suchst, ist dies. Leider funtionieren Introspection-Tools wie MRI oder Xray nicht mehr mit der IDL von LO 4.2, aber in älteren Versionen kann man z.b mit

Code: Alles auswählen

xray oDataRowProperties
direkt hineinschauen und sieht dann dies:
Xray_mit_lokalem_SKD.png
Xray_mit_lokalem_SKD.png (71.65 KiB) 6450 mal betrachtet
und kann nun diese Zeile schreiben:

Code: Alles auswählen

oDataRowProperties.LineStyle = com.sun.star.drawing.LineStyle.SOLID
HTH
Windows 11: AOO, LO Linux Mint: AOO, LO

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von balu » So 27. Apr 2014, 23:53

Hallo R,
F3K Total hat geschrieben: Leider funtionieren Introspection-Tools wie MRI oder Xray nicht mehr mit der IDL von LO 4.2
Worauf beruht diese deine Aussage? Denn ich habe

Version: 4.2.1.1
Build-ID: d7dbbd7842e6a58b0f521599204e827654e1fb8b

mir selber portable gemacht und da funktioniert die 6.0 Version von Xray. Oder habe ich dich jetzt irgendwie falsch verstanden?



Gruß
balu

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von F3K Total » Mo 28. Apr 2014, 06:18

Hallo Balu,
Xray funktioniert, aber ein Druck auf API doc, bei lokal installiertem SDK, öffnet die IDL nicht, oder hast Du dies hinbekommen?

Gruß Rik
Windows 11: AOO, LO Linux Mint: AOO, LO

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von balu » Mo 28. Apr 2014, 13:35

Mahlzeit R,
aber ein Druck auf API doc, bei lokal installiertem SDK, öffnet die IDL nicht, oder hast Du dies hinbekommen?
Bild Jetzt versteh ich was Du meinst.
Ich hatte anfang des Jahres schon mal nach der passenden SDK für LO gesucht, aber aus irgendwelchen Gründen sie nicht gefunden, hatte dann aber auch nicht mehr weiter danach gesucht.

Da ich aber OOo 3.2.1 fest installiert hatte, habe ich für die ebenfalls fest installierte AOO 4.0.1 auf die SDK von OOo zugegriffen. Und das funktioniert auch. Die installierte SDK ist die OOo-SDK_3.2.1_Win_x86_install_en-US.exe. In AOO habe ich keine Probleme.

Nun hatte ich mir gedacht, das dies eventuell auch mit LO funktioniert. Also den Pfad der SDK für OOo ausgewählt, kopiert, in Xray in LO an der richtigen Stelle (Pfad auswählen) eingefügt, und fertig. Die einzigen "Problemchen" die ich dabei in LO habe sind folgende:
- manchmal kommt von Xray die Meldung 'Broken', wenn ich in den Properties auf 'API DOC' klicke, aber nach einem Klick auf OK komm ich dann doch zu dem Ziel.
- und je nach dem was ich per 'API DOC' untersuchen will, muss ich im Browser erst das richtige aussuchen:
This property is not found in the services supported by the object, but it exists in other services.

Check that the obtained information suits your context.

AbsoluteName - property in service ::com::sun::star::sheet:: .SheetCell
AbsoluteName - property in service ::com::sun::star::sheet:: .SheetCellRange
AbsoluteName - property in service ::com::sun::star::sheet:: .SheetCellRanges
In AOO werde ich aber bei der gleichen Auswahl in Xray direkt zu "service SheetCellRange --> AbsoluteName" geführt. Das sind aber bis jetzt nur zwei kleinigkeiten womit es sich leben lässt.

Hilft dir das weiter, oder muss ich das ganze prozedere noch genauer beschreiben? Was ich natürlich dann machen kann.



Gruß
balu

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von F3K Total » Mo 28. Apr 2014, 19:53

Hallo Balu,
balu hat geschrieben:Hilft dir das weiter, oder muss ich das ganze prozedere noch genauer beschreiben? Was ich natürlich dann machen kann.
leider nein. Das die älteren SDK's noch funktionieren ist mir klar, und wie ich darauf zugreifen müsste, auch.
Es geht darum, dass das aktuelle, z.B. von LO 4.2.3, nicht mehr funktioniert, weil es die .html-Seiten, die Xray und Mri bisher zur Anzeige verwendent haben, nicht mehr beinhaltet.

Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von balu » Do 1. Mai 2014, 02:35

Hallo R,
Es geht darum, dass das aktuelle, z.B. von LO 4.2.3, nicht mehr funktioniert, weil es die .html-Seiten, die Xray und Mri bisher zur Anzeige verwendent haben, nicht mehr beinhaltet.
Da bin ich momentan echt überfordert, da ich das aktuelle SDK (das meinst Du doch mit 'das aktuelle') nicht habe. Das müsste ich mir erstmal besorgen um weiter zu schauen.



Gruß
balu

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Beitrag von karolus » Do 1. Mai 2014, 08:58

Hallo
Der Unterschied besteht darin das in Lo die SDK-dokumentation nicht mehr durch `Autodoc` generiert wird sondern per
doxygen

In LO liegt die Dokumentation jetzt im Pfad .../sdk/docs/idl/ref/. und nicht mehr unter .../sdk/docs/common/ref/. - das alleine wäre in 5 Minuten bei Xray und Mri gefixt, leider ist die Ordnerstruktur und die Dateinamen-konvention darunter völlig unterschiedlich.

Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten