CALC: Bild einfügen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Loudos
Beiträge: 4
Registriert: Sa, 27.02.2010 17:57

CALC: Bild einfügen

Beitrag von Loudos »

Hallo zusammen!

ich hab mich hier grade erst angemeldet ich hoffe mir kann jemand helfen.
Ich versuche ein makro zu schreiben das folgendes macht:

Das Makro fügt in die aktuelle Tabelle eine Grafik ein.
Der Pfad dieser Grafik soll aber aus der Zelle A1 bestimmt werden!

So könnte ich grafiken über ein marko einfügen und müsste nur den namen ändern!

Ich hoffe jemand weiß wie das geht

danke gruß loudos


Moderation,4: verschoben in MAKROS (und allgem. Programmierung)-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makro Bild einfügen

Beitrag von turtle47 »

Hallo Loudos,

folgendes sollte funktionieren:

Code: Alles auswählen

Sub BildEinfuegen
Dim oDoc as Object
Dim mySheet as Object
Dim oCell as Object
Dim Page as Object
Dim GrafikName as String
	oDoc = thisComponent
	mySheet = oDoc.Sheets(0)	
	Page = mySheet.drawPage
	NewGrafik = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
	oCell = mySheet.getCellRangeByName("A1")
	GrafikName = ConvertToURL(oCell.String)
	NewGrafik.GraphicURL=GrafikName
	NewGrafik.name = GrafikName
	oCell = mysheet.getcellRangebyName("C5")'Ankerposition festlegen	
	page.add(NewGrafik)
	NewGrafik.Anchor = oCell
	Dim Size As New com.sun.star.awt.Size
	oBildGroesse =NewGrafik.GraphicObjectFillBitmap.GetSize
	hoehe = oBildGroesse.height   ' in Pixeln
 	breite = oBildGroesse.width    'in Pixeln 	
	dim oGrafikGroesse  as new com.sun.star.awt.Size
	oGrafikGroesse.height = hoehe * 20 'Grösse festlegen
	oGrafikGroesse.width = breite * 20 
	NewGrafik.setSize(oGrafikGroesse)
End Sub
Die Pfadangabe sollte in etwa so lauten:

Code: Alles auswählen

C:/User/Folder/ImageName.jpg
Fragen zur Programmierung bitte im Bereich OOo Basic und Java stellen.

Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Loudos
Beiträge: 4
Registriert: Sa, 27.02.2010 17:57

Re: Makro Bild einfügen

Beitrag von Loudos »

danke für den code
leider funktioniert er bei mir nicht, hab folgendes problem
oBildGroesse =NewGrafik.GraphicObjectFillBitmap.GetSize
hier kommt folgender fehler: BASIC-Laufzeitfehler. Objektvariable nicht belegt


und noch eine frage bei
hoehe = oBildGroesse.height ' in Pixeln
breite = oBildGroesse.width 'in Pixeln
dim oGrafikGroesse as new com.sun.star.awt.Size
oGrafikGroesse.height = hoehe * 20 'Grösse festlegen
oGrafikGroesse.width = breite * 20
muß ich da bei "in Pixeln" und bei "Grösse festlegen" etwas eintragen?
Sorry hab garkeine Ahnung von sowas.

Gruß
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makro Bild einfügen

Beitrag von turtle47 »

Loudos hat geschrieben:hab folgendes problem
Du weisst schon, dass das Problem in den meissten Fällen zwischen Tastatur und Rückenlehne sitzt. :wink:
Loudos hat geschrieben:hier kommt folgender fehler: BASIC-Laufzeitfehler. Objektvariable nicht belegt
Das kommt daher, dass die Grafik schlichtweg nicht unter dem angebenen Pfad vorhanden ist! :shock:

Füge mal zwischen:

Code: Alles auswählen

GrafikName = ConvertToURL(oCell.String)
und

Code: Alles auswählen

NewGrafik.GraphicURL=GrafikName
folgende Zeilen ein:

Code: Alles auswählen

	if not FileExists(GrafikName) then
	msgbox "Die Grafik ist nicht vorhanden!"
	exit sub
	end if
Damit wird überprüft, ob das Bild überhaut vorhanden ist. Wenn nicht, dann gibt es eine Fehlermeldung.
Loudos hat geschrieben: muß ich da bei "in Pixeln" und bei "Grösse festlegen" etwas eintragen?
Nein, nicht unbedingt. Den Wert "20" kannst Du beliebig verändern, welches einen Einfluss auf die Grösse des Bildes im Sheet hat.
Loudos hat geschrieben:Sorry hab garkeine Ahnung von sowas.
Stephan hat sich die Arbeit gemacht und eine Liste zusammengestellt für weiterführende Informationen zur Starbasic-Programmierung.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Loudos
Beiträge: 4
Registriert: Sa, 27.02.2010 17:57

Re: Makro Bild einfügen

Beitrag von Loudos »

also wenn das wirklich daran liegt das die datei nicht vorhanden sein soll, dann liegt wohl echt an mir, ich hab die datei definitiv dort liegen!
hab auch ein makro aufgenohmen mit dem ich speziel diese eine datei einfüge und da gehts.

was kann ich tun, oder liegt doch am code?
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makro Bild einfügen

Beitrag von turtle47 »

Hmm, schwer zu sagen warum es nicht geht.

Kann es sein, dass bei der Pfadangabe in der Zelle vorne oder hinten noch Leerzeichen stehen die da nicht hingehören?

Ansonsten poste mal den Code den Du aufgezeichnet hast.

Was für ein BS und welche OOo-Version nutzt Du?
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Loudos
Beiträge: 4
Registriert: Sa, 27.02.2010 17:57

Re: Makro Bild einfügen

Beitrag von Loudos »

Sub BildEinfuegen
Dim oDoc as Object
Dim mySheet as Object
Dim oCell as Object
Dim Page as Object
Dim GrafikName as String
oDoc = thisComponent
mySheet = oDoc.Sheets(0)
Page = mySheet.drawPage
NewGrafik = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
oCell = mySheet.getCellRangeByName("A1")
GrafikName = ConvertToURL(oCell.String)
if not FileExists(GrafikName) then
msgbox "Die Grafik ist nicht vorhanden!"
exit sub
end if
NewGrafik.GraphicURL=GrafikName
NewGrafik.name = GrafikName
oCell = mysheet.getcellRangebyName("C5")'Ankerposition festlegen
page.add(NewGrafik)
NewGrafik.Anchor = oCell
Dim Size As New com.sun.star.awt.Size
oBildGroesse =NewGrafik.GraphicObjectFillBitmap.GetSize
hoehe = oBildGroesse.height ' in Pixeln
breite = oBildGroesse.width 'in Pixeln
dim oGrafikGroesse as new com.sun.star.awt.Size
oGrafikGroesse.height = hoehe * 20 'Grösse festlegen
oGrafikGroesse.width = breite * 20
NewGrafik.setSize(oGrafikGroesse)
End Sub



es lag doch am leerzeichen.
kannst du mir noch sagen was ich machen soll damit er die datei in die 2te tabelle einfügt.
Loudos
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Makro Bild einfügen

Beitrag von turtle47 »

Loudos hat geschrieben:es lag doch am leerzeichen.
Da bin ich jetzt aber beruhigt. :D
Loudos hat geschrieben:kannst du mir noch sagen was ich machen soll damit er die datei in die 2te tabelle einfügt.
Ersetze

Code: Alles auswählen

mySheet = oDoc.Sheets(0) 
durch

Code: Alles auswählen

mySheet = oDoc.Sheets(1) 
Der Index der Tabellenblätter fängt bei Null an zu zählen.

Schönes Restwochenende.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Gesperrt