Hallo Horst.

Du möchtest also in Abhängigkeit eines Zellinhaltes eine Grafik in eine andere Zelle schreiben? Das geht mit einer User-Funktion und ein wenig Makro Code (auch Dispatcher Code geht.) Allerdings must Du das GUT testen, da es eigendlich nicht so toll ist mit einer User-Funktion eine andere als die aufrufende Zelle zu ändern.

Also schaun wir mal....

Horst Schulze schrieb:
Hallo Regina,

ohne Makros wüsste ich gar nicht, wie das gehen sollte.

Das Makro soll eine Zelle (z.B. A5) auslesen (kein Problem) und dann nach dem Wert eine Grafik in eine Zelle(z.B. c5) einfügen.
Der Wert von A5 wird dadurch bestimmt durch eine Formel =wenn(....
Das ist in einer Texttabelle so nicht möglich. Ginge ja evtl. mit anderen Makros, wäre aber umständlicher.

Da ich so etwas ggf. auch mal in umfangreicheren Tabellen nutzen möchte, würde mich das interessieren, wie das möglich wäre.

Ah - hier!

Erstelle (oder speichere ein paar Grafiken in Deinem Dateisystem.)
Hier nehmen wir mal an, das Du die Grafiken:
de.jpg
e.jpg
usa.jpg
erstellt hast und diese in dem Ordner c:\temp\ abgelegt hast.

Nun machst Du eine neues Tabellendokument:
In Spalte A schreibst Du von oben nach unten:
Deutschland
Amerika
Spanien
Lettland

Diese Spalte kopierst du zu Tabelle2.
In Tabelle 2 trägst Du neben die Länder die entsprechenden Dateinamen ein.
In Zelle Tabelle2.B1 steht also c:\temp\de.jpg
in Zelle Tabelle2.B2 steht c:\temp\usa.jpg
usw.

Nun wieder in Tabelle1 füllst Du einen Verweis in die Spalte B
in B1 steht =SVERWEIS(A1;Tabelle2.A1:Tabelle2.B2;2;0)
(kopiere die Formel anschliessend von B1 nach B2,B3,B4 ...)

in die Spalte C kommt ein Adressfeld:
in C1 also: =WENN(ISTNV(B1);"";ZELLE("ADRESSE";E1))
(ebenfalls nach unten kopieren)

Nun schreibst Du ein kleines Macro (eine User Definierte Funktion)
Extras - Makros - Verwalten - Openoffice.org Basic -Meine Makros - Standard - Modul1 - Neu
Dann sollte der Makroeditor erscheinen.

Schreibe folgendes hinein:
---------------------------------------------
function grafik(FileName$,zelle$)
rem goto Cell
Dim oCell
Dim oSheet
rem
rem Zelle selektieren
rem
oSheet = StarDesktop.CurrentComponent.CurrentController.ActiveSheet
oCell = oSheet.getCellRangeByName(zelle)
ThisComponent.CurrentController.Select(oCell)

rem
rem  einfügen einer Grafik mittels dispatcher Codes
rem
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "FileName"
args2(0).Value = converttourl(FileName$)
args2(1).Name = "FilterName"
rem
Rem Achtung - für JPEG Dateien.
rem andere Dateien brauchen eine andere Value als Filtername!
rem
args2(1).Value ="JPEG - Joint Photographic Experts Group"
args2(2).Name = "AsLink"
args2(2).Value = true

dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0,args2())
end function

---------------------------------------------



Nun kannst Du den Editor schliessen und in die Tabelle in Spalte D
den Aufruf der Funktion eintragen:
D1 enthält dann: =GRAFIK(B1;C1)

Damit sollte in der Zelle, die in C1 genannt wird die Grafik mit dem Namen, der in B1 genannt wird eingetragen werden.

Teste es mal. Es geht.
Allerdings, werden nicht bei jeder Neuberechnung die Grafiken aktualisiert.

Da müsste man wahrscheinlich noch einen Eventlistener schreiben.

Gruß
Volker

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org

Antwort per Email an