Seite 1 von 1

Adresse von Grafiken dynamisch per Zellinhalt verändern?

Verfasst: Sa, 28.10.2006 12:39
von DennisAusMaar
Hi,

kennt jemand eine Lösung für folgendes (vielleicht nicht ganz alltägliches) Problem?

Ich möchte in einer Zelle (B1) eine Grafik einfügen. Die Grafik soll nicht fest mit dem Dokument gespeichert werden sondern nur als Verknüpfung zu einer externen Grafik abgelegt sein. Soweit noch kein Problem.
Jetzt möchte ich allerdings durch den Wert einer anderen Zelle (A1) das Verknüpfungsziel der Grafik (in B1) ändern. Wenn ich also z. B. in der besagten Zelle (A1) "Apfel" eintrage soll z.B. als Grafik (B1) die Datei "./img/Apfel.jpg" erscheinen, wenn ich stattdessen in die erste Zelle (A1) "Baum" eintrage soll sich der Verweis der Grafik (B1) ändern, eben in z. B. "./img/Baum.jpg".

Ich bin auch gegenüber Makros nicht abgeneigt, falls mir hier jemand ggf. weiterhelfen kann.

Danke,

Dennis

Verfasst: Sa, 28.10.2006 18:35
von Karolus
Hallo Dennis
Mit etwas aufgezeichnetem Makrocode plus ein paar eingefügten bzw. geänderten Zeilen sollte es funktionieren :

Code: Alles auswählen

REM  *****  BASIC  *****
sub bildeinfuegen
rem Aufzeichnungsanfang
rem define variables
dim document   as object
dim dispatcher as object
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$1" 'Hier wird eingefügt
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem echter Makrocode für Variable "bildname"
 myDoc = thisComponent
mySheet = myDoc.sheets(0)  'Tabelle1
mycell = mysheet.getCellByPosition(0,0)  ' In A1 steht der Name des Bildes
bildname=mycell.string

rem Aufgezeichneter Code Fortsetzung
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "FileName"
args2(0).Value = "file:///Dein/Verzeichnis/Pfad/" & bildname & ".jpg" 'eingefügte Variable
args2(1).Name = "FilterName"
args2(1).Value = "JPEG - Joint Photographic Experts Group"
args2(2).Name = "AsLink"
args2(2).Value = true

dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args2())
end sub
Leider ist es mir nicht gelungen, vor dem Einfügen eines neuen Bildes , alte Bilder per Makro zu entfernen.

Gruß Karo

Verfasst: So, 29.10.2006 22:22
von DennisAusMaar
Hallo Karo,

vielen Dank für die schnelle und gute Antwort! Damit komme ich doch schonmal ein ganzes Stück weiter :)

Gruß,

Dennis