(GELÖST) Bilder mit Zellen verknüpfen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Cappi
Beiträge: 3
Registriert: Fr, 15.10.2021 01:53

(GELÖST) Bilder mit Zellen verknüpfen

Beitrag von Cappi »

Aloha liebe Community,

ich suche nach einer Möglichkeit, den Inhalt einer Zelle (in meinem Fall das Kommentarfeld) per Formel automatisch zu übernehmen.

Konkretes Beispiel:
Zellbereich A123:A154 enthält in jeder Zelle einen eigenen Kommentar, der auch angezeigt wird. Jetzt würde ich gerne jede dieser Zellen durch eine WENN-Formel auslesen können und in Zelle A12 anzeigen lassen, wenn in Zelle B2 (welches per Dropdown 32 verschiedene Begriffe anzeigen kann) sich der Text ändert. Wichtig ist, dass hierbei der Kommentar übernommen wird und wenn möglich angezeigt wird.
Zu erwähnen wäre noch, dass die Kommentare Bilder sind.

Allerdings fehlt mir das Wissen, wie ich den Kommentar aus einer der 32 Zellen (A123:A154) dabei mit übernehmen kann. Gibt es dafür ein "geheimes Zeichen" wie bei T(Vorlage("xy"))? Wenn ja, wo finde ich eine Auflistung solcher "geheimen Zeichen"?

Meine zweite Herangehensweise war, dass ich dies per bedingte Formatierung mache, aber dort kann ich keine Bilder einfügen oder geht das doch irgendwie?

Oder gibt es eine Möglichkeit ein Bild anzeigen zu lassen in Abhängigkeit davon, welcher Text in einer anderen Zelle steht?

Praktisch wäre es auch, wenn das Bild, beim Ausgeben, seine Formatierung nicht ändern würde.

Mit freundlichem Gruße
Cappi

Edit: Um ein Bild in einen Kommentar einzubinden macht man folgendes:
Zelle A123 auswählen>Rechtsklick>Kommentar einfügen>1x Leertaste drücken
Dann Kommentar anzeigen lassen
Rechtsklick auf den Kommentar>Fläche>Reiter Bitmapmuster auswählen>Import>Bild raussuchen>Reiter Schatten>auf 0 Distanz>In Reiter Fläche die Füllung auf Bitmap umstellen und Bild ganz unten auswählen>Rechts bei der Position noch das Häkchen bei Kacheln abwählen

Danach kann mit dem Makro von "F3K Total" das Bild woanders ausgegeben werden.
Zuletzt geändert von Cappi am Mi, 20.10.2021 19:57, insgesamt 3-mal geändert.
F3K Total
********
Beiträge: 3569
Registriert: Mo, 28.02.2011 17:49

Re: Zellinhalt übernehmen oder Bilder in bedingte Formatierung einbinden

Beitrag von F3K Total »

Moin,
ich habe dir dieBenutzerfunktion (Makro) get_annotation_picture (sCellname) programmiert, die das Bild aus dem Kommentar der in B2 gewählten Zelle (A127 bis A154) in Zelle A12 anzeigt, die Funktion wird in Zelle C2 aufgerufen:

Code: Alles auswählen

Function get_annotation_picture(sCellname)
    on error goto errorhandler
    dim sFillBitmapURL as String
    oSheet = thisComponent.Sheets(0)
    oCell = oSheet.getcellrangebyName(scellname)
    oAnnotationShape = oCell.Annotation.AnnotationShape
    sFillBitmapURL = oAnnotationShape.FillBitmapURL
    oTargetCell = oSheet.getcellRangeByName("H2")
    oDrawpage =  oSheet.drawpage
    for i = 0 to oDrawpage.count -1
        oShape  = oDrawpage(i)
        if oShape.Name = "TargetGrafik" then 
            oShape.GraphicURL =  sFillBitmapURL
            exit for
        endif
    next i
    errorhandler:
end function
Beispiel anbei.
Damit das Makro laufen darf, stellst du unter Extras/Einstellungen/Openoffice/Sicherheit/Makrosicherheit oder Extras/Optionen/LibreOffice/Sicherheit/Makrosicherheit mindestens die Stufe Mittel ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.
Gruß R
Dateianhänge
getAnnotationPicture.ods
(19.09 KiB) 16-mal heruntergeladen
Cappi
Beiträge: 3
Registriert: Fr, 15.10.2021 01:53

Re: Zellinhalt übernehmen oder Bilder in bedingte Formatierung einbinden

Beitrag von Cappi »

Vielen lieben Dank Mr. R

Da ich mich mit Makros noch nicht richtig auskenne, kannst du mir eine kurze Step-by-Step-Anleitung mitliefern, was ich zu tun habe? Irgendwie funktioniert das bei mir noch nicht so ganz.

-unter Extras/Einstellungen/Openoffice/Sicherheit/Makrosicherheit auf "Mittel" stellen, habe ich erledigt
-das von dir geschriebene Makro unter Extras/Makros/Makros verwalten/OpenOffice Basic ->Meine Makros->Module1->Main unter der Zeile "End Sub" einfügen, habe ich erledigt
-wie geht es weiter? wo muss ich noch etwas einfügen, ändern oder sonstiges?

-Muss ich noch etwas bei deinem Makro abändern oder einfügen? Mich verwirrt besonders noch der Begriff (sCellname) in der Funktion. Soll ich dort noch eine Zelle oder einen Namen eintragen oder ist das fertig so, wie es ist?
-Und warum steht in deinem Makro unter oTargetCell = ("H2")? Warum ist es in Anführungszeichen und müsste es nicht dann eher B2 sein?
-Muss das rot-geschriebene von mir noch angepasst werden?
-Alles was blau und grün ist, dürfte ich ja vermutlich nicht verändern, richtig?

Mit freundlichem Gruße
Der unwissende Cappi

P.S.: Ich hoffe, ich mach keine zu großen Umstände

2.P.S.: Könnte ich dann jetzt mit einer Funktion like: WENN(B2="Auto";A123;wenn(B2="Bus";A124; usw.) in C12 jeweils einen anderen Kommentar/Bild erhalten?

3.P.S.: Und müssen die Bilder in den Orginalzellen (A123:A154) angezeigt werden oder können sie dort auch ausgeblendet sein um die Performance nicht zu sehr zu belasten?

4.P.S.: Brauche ich Java überhaupt um das alles zu nutzen?
F3K Total
********
Beiträge: 3569
Registriert: Mo, 28.02.2011 17:49

Re: Zellinhalt übernehmen oder Bilder in bedingte Formatierung einbinden

Beitrag von F3K Total »

Moin,
Cappi hat geschrieben: Sa, 16.10.2021 20:04 -Muss ich noch etwas bei deinem Makro abändern oder einfügen? Mich verwirrt besonders noch der Begriff (sCellname) in der Funktion. Soll ich dort noch eine Zelle oder einen Namen eintragen oder ist das fertig so, wie es ist?
Das ist völlig richtig, ich hatte das Bild erst in Zelle H2.
Du kannst die Zeile komplett löschen, wird nicht mehr benötigt, denn das Bild wird in TargetGrafik angezeigt, zellunabhängig.
Du fügst einfach irgendein Bild an der Stelle, wo du später das Bild angezeigt bekommen möchtest, in die Datei ein, machst dann einen Rechtsklick auf das Bild und benennst es unter Name ... zu TargetGrafik um.
Cappi hat geschrieben: Sa, 16.10.2021 20:04 -Und warum steht in deinem Makro unter oTargetCell = ("H2")? Warum ist es in Anführungszeichen und müsste es nicht dann eher B2 sein?
Die function get_annotation_picture (sCellname) benötigt die Adresse der gewünschten Kommentarzelle alsText. (String)
Cappi hat geschrieben: Sa, 16.10.2021 20:04 -Muss das rot-geschriebene von mir noch angepasst werden?
Ich sehe nichts rot geschriebenes
Cappi hat geschrieben: Sa, 16.10.2021 20:04 P.S.: Ich hoffe, ich mach keine zu großen Umstände
Naja :-))
Cappi hat geschrieben: Sa, 16.10.2021 20:04 2.P.S.: Könnte ich dann jetzt mit einer Funktion like: WENN(B2="Auto";A123;wenn(B2="Bus";A124; usw.) in C12 jeweils einen anderen Kommentar/Bild erhalten?
das geht, ich würde es anders lösen, Beispiel wieder anbei. Ist aber kompliziert, ich habe jeder Zelle A127 bis A154 eine Benennung zugefügt, die per Matrixformel ausgewertet wird und dann automatisch die entsprechende Zelladresse zurückliefert.

Code: Alles auswählen

={"A"&MAX(($A$123:$A$154=$A$2)*ZEILE($A$123:$A$154))}
Geht bestimmt einfacher, vielleicht hat jemand anderes eine Idee dazu?
Cappi hat geschrieben: Sa, 16.10.2021 20:04 3.P.S.: Und müssen die Bilder in den Orginalzellen (A123:A154) angezeigt werden oder können sie dort auch ausgeblendet sein um die Performance nicht zu sehr zu belasten?
Ich hatte sie doch ausgeblendet, und es hat funktioniert.
Cappi hat geschrieben: Sa, 16.10.2021 20:04 4.P.S.: Brauche ich Java überhaupt um das alles zu nutzen?
Nein! Das Makro ist in Starbasic, immer implemetiert, geschrieben.
Dateianhänge
getAnnotationPicture.ods
(21.43 KiB) 9-mal heruntergeladen
Cappi
Beiträge: 3
Registriert: Fr, 15.10.2021 01:53

Re: Zellinhalt übernehmen oder Bilder in bedingte Formatierung einbinden

Beitrag von Cappi »

Vielen, vielen Dank

Funktioniert wunderbar. Musste mich bloß noch bissl reinfuchsen, was wo hingehört, weil mir die ganze Zeit Err512 oder 520 angezeigt wurde, aber hab dann alles zuordnen können und jetzt läufts, wie es soll.

Das rot geschriebene sehe ich, wenn ich deine Matrixformel einfüge. Sind jetzt nur noch 3 Zahlen. Sonst ist viel grüner Text und noch ein bisschen blau eingefärbter Text dabei. Hab das jetzt aber auch geschnallt.

Function get_annotation_picture(sCellname)
on error goto errorhandler
dim sFillBitmapURL as String
oSheet = thisComponent.Sheets(0)
oCell = oSheet.getcellrangebyName(scellname)
oAnnotationShape = oCell.Annotation.AnnotationShape
sFillBitmapURL = oAnnotationShape.FillBitmapURL
oDrawpage = oSheet.drawpage

for i = 0 to oDrawpage.count -1
oShape = oDrawpage(i)
if oShape.Name = "TargetGrafik" then
oShape.GraphicURL = sFillBitmapURL
exit for
endif
next i
errorhandler:
end function


So ungefähr +/- einige Sachen mehr oder weniger eingefärbt ;)

Vielen Dank nochmal
Antworten