🍀 Bitte helfen Sie mit, das LibreOffice Forum zu erhalten. 🍀

❤️ DANKE >> << DANKE ❤️

Unterstützen Sie noch heute unsere Spendenkampagne für 2026.
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

Makros bei Laden einer Datei

Alles zur Programmierung im LibreOffice.
Antworten
Cepheus
Beiträge: 13
Registriert: Mo 12. Mai 2025, 21:51

Makros bei Laden einer Datei

Beitrag von Cepheus » Di 3. Feb 2026, 19:01

Bei einer ähnlichen Anfrage habe ich (von Karolus) gelernt, wie ein Makro mit dem Ereignis verknüpft wird. Weiters habe ich gelernt, alle Sprungziele des aktuellen Dokuments zu ermitteln. Eines der Ziele ist "Bild6|graphic" vom Linktyp "Bilder". Nun möchte ich, dass beim Öffnen der Datei eben zu diesem Bild gesprungen wird. Dazu habe ich das Ereignis Dokument erzeugt mit folgendem Makro vernüpft:

Code: Alles auswählen

Sub LinkBeiDokumentErzeugt
	Dim vOneLink 'Ein Linktyp
	Dim vObj

	vOneLink = ThisComponent.getLinks().getByName("Bilder") 'Ein Linktyp
	vObj = vOneLink.getByName("Bild6|graphic")	'Ein in dem Linktyp enthaltener Link
	ThisComponent.CurrentController.Select(vObj)
End Sub
Ergebnis: Das Bild wird angesprungen und leider auch ausgewählt. Wie könnte ich das Makro besser gestalten?
Ich bitte um Vorschläge.
Gruß,
Cepheus

mikele
* LO-Experte *
Beiträge: 2011
Registriert: Mo 1. Aug 2011, 20:51

Re: Makros bei Laden einer Datei

Beitrag von mikele » Sa 7. Feb 2026, 15:03

Hallo,
der Spung an die richtige Stelle im Dokument bedeutet hier den ViewCursor an die entsprechende Stelle zu setzen.

Code: Alles auswählen

Sub LinkBeiDokumentErzeugt
	Dim vOneLink 'Ein Linktyp
	Dim vObj
	oDoc=ThisComponent
	vOneLink = oDoc.getLinks().getByName("Bilder") 'Ein Linktyp
	vObj = vOneLink.getByName("Bild1|graphic")	'Ein in dem Linktyp enthaltener Link
	'Wenn das Bild sich in einem Textrahmen (Beschriftung) befindet, wird zur Beschriftung gesprungen
	'wenn das nicht sein soll, muss zunächst das übergeordnete Objekt gewählt werden - dazu die folgenden drei Zeilen entkommentieren
'	if vobj.Parenttext.supportsService("com.sun.star.text.TextFrame") then
'		vObj=vobj.Parenttext
'	end if
	'Textcursor setzen
	oTextCursor=vObj.Anchor.Text.createTextCursorByRange(vObj.Anchor)
	'aktuellen Viewcursor auslesen
	oViewCursor=oDoc.CurrentController.ViewCursor
	'Viewcursor an die Stelle des Textcursors setzen
	oViewCursor.gotoRange(oTextCursor, False)
End Sub
Gruß,
mikele


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten