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 » Sa, 27.02.2010 18:02

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 » Sa, 27.02.2010 18:53

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 » So, 28.02.2010 10:29

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 » So, 28.02.2010 11:02

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 » So, 28.02.2010 12:42

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 » So, 28.02.2010 13:03

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 » So, 28.02.2010 13:23

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 » So, 28.02.2010 14:02

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

Passiflora

Re: Makro Bild einfügen

Beitrag von Passiflora » Do, 09.07.2015 14:05

Klasse Makro! Vielen Dank dafür.
Lässt sich das Makro auch so umschreiben, dass man mehrere Bilder an verschiedenen Positionen einfügen kann?
Ich bräuchte es so, dass in Spalte B jeweils der Dateiname steht und das Bild in die Spalte A der gleichen Zeile eingefügt wird.
Leider kenne ich mich (noch) gar nicht mit Makroprogrammierung aus, sonst hätte ich das selbst gemacht.

KS_HTK

Re: Makro Bild einfügen

Beitrag von KS_HTK » Sa, 08.07.2017 23:28

Passiflora hat geschrieben:
Do, 09.07.2015 14:05
Klasse Makro! Vielen Dank dafür.
Lässt sich das Makro auch so umschreiben, dass man mehrere Bilder an verschiedenen Positionen einfügen kann?
Ich bräuchte es so, dass in Spalte B jeweils der Dateiname steht und das Bild in die Spalte A der gleichen Zeile eingefügt wird.
Leider kenne ich mich (noch) gar nicht mit Makroprogrammierung aus, sonst hätte ich das selbst gemacht.
Suche heute (2 Jahre nach dir) nach einem ähnlichen makro, aber da du schon keine Antwort mehr bekommen hast, rechne ich nicht mit einer...
Werde mal selbst versuchen es auf eine Cell Range anzuwenden.

Moderationshinweis:
Bitte keine "alten" Threads mehr aufwärmen.
Siehe auch Infos zur Forenbenutzung (dort unter: "Eröffnet neue Threads").
Eröffne bitte einen neuen Thread mit Deiner Frage.
Thread geschlossen.

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste