Fehlermeldung beim Aufruf ImagesEmbedder

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

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von clag »

Hallo Kenner und Könner,

in Folge dieses thread habe ich mir dieses Add_On installiert, das funktioniert auch ganz prima.

In der Beschreibung zum AddOn steht, man kann es auch aus einem Makro heraus aufrufen,
dazu habe ich diese beiden Zeilen in ein Makro eingefügt welches das aktuelle Dokument schließt

Code: Alles auswählen

embedImagesOfThisDocument
odoc.store()
das funktionierte auch super.

Nur heute morgen nach dem starten von OOo und öffnen von Writer lief das Makro nur bis zur ersten der beiden Zeilen und es gab einen Fehler, nach dem ich das AddOn dann einmal manuell also aus dem Menü heraus gestartet hatte funktioniert nun auch das Makro wieder ?
Es scheint das da irgend etwas initialisiert wurde... nur was ist mir unklar?
kann einer von euch erkennen was im Makrocode fehlt bzw hinzugefügt werden müsste damit es gleich funktioniert?


Moderation,4: Du weisst doch inzwischen wie aussagekräftige Betreffs auszusehen haben, oder? Geändert!
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: etwas fehlt nur was?

Beitrag von komma4 »

Die Fehlermeldung lautet?


Die fehlt höchstwahrscheinlich die Verfügbarkeit der BASIC-Bibliotheken der Erweiterung:

Code: Alles auswählen

Globalscope.BasicLibraries.loadLibraries( "<Name der Bibliothek>" )
Den Namen findest Du in der linken Listbox Deiner OOo-Makros
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von clag »

Hallo Komma4

ja sorry, ja aber . . . . ok :)
embedd-error.png
embedd-error.png (8.64 KiB) 629 mal betrachtet
das wird beim Erststart gemeldet

das komplette Makro

Code: Alles auswählen

Sub loadagain01

 Dim myProp(0) as new com.sun.star.beans.PropertyValue
 myProp(0).name="MacroExecutionMode"
 myProp(0).value = 6
 odoc=thisComponent

 aService = CreateUnoService("com.sun.star.util.PathSubstitution")
 sUserPath = aService.substituteVariables("$(user)", true)


	If ThisComponent.isModified() Then
		MsgBox "Bitte erst das aktuelle Dokument unter einem Namen speichern" , 48
		
		exit sub
	End If

	If ThisComponent.hasLocation() Then
		embedImagesOfThisDocument
		odoc.store()
		odoc.close(true)
		url = sUserPath & "\template\html-import-1.ott"
		oDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myProp() )
	End If

End Sub


komma4 hat geschrieben:Den Namen findest Du in der linken Listbox Deiner OOo-Makros
das versteht/finde ich nicht, kannst du es bitte in SAU language übersetzen ..> ..> ..>
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von DPunch »

Aloha

Wie komma4 schon sagt, die Basic-Bibliothek des Addons ist nicht geladen.
Durch das manuelle Starten navigierst Du in diese Bibliothek, wodurch sie auch automatisch geladen wird - beim Aufruf per Makro musst Du das aber explizit angeben, dass die Bibliothek geladen werden soll, sonst sind natürlich alle Funktionen und Prozeduren darin unbekannt.
clag hat geschrieben:das versteht/finde ich nicht, kannst du es bitte in SAU language übersetzen
Nimms nicht persönlich, aber Du bist wirklich erstaunlich unselbstständig ;)

Seis drum:
Siehe Screenshot.
Nehmen wir an, ich will die Prozedur "MarkRowsWithAdditionalInfo" aufrufen. Diese liegt in der Bibliothek "MyLibrary".
Für den reibungslosen Ablauf muss ich gewährleisten, dass die Prozedur auch bekannt ist.
Daher stelle ich an den Anfang des Codes

Code: Alles auswählen

	If NOT Globalscope.BasicLibraries.isLibraryLoaded("myLibrary") Then
		Globalscope.BasicLibraries.loadLibrary("myLibrary")
	End If
Du navigierst also einfach in das Modul, wo die Prozedur "embedImagesOfThisDocument" liegt - dann schaust Du, wie die Bibliothek heisst und ersetzt im Codeschnipsel "myLibrary" durch diesen Namen.
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von clag »

Hallo DPunch,

leider komm ich auch mit deiner Beschreibung nicht weiter,
so eine Box Objekte kann ich nicht finden auch keine andere in der solche mit grünen Pfeilen gekennzeichnete Einträge zu sehen sind !

Und das ich unselbstständig bin wusste ich bisher nicht, aber du hast das ganz schnell erkannt, Hochachtung für diese Ferndiagnose, ehrlich auf solche Bewertungen kann ich gut verzichten.
Denken kannst du natürlich über mich wie du möchtest.
Ich finde es besonders Schade, weil ich nun schon sehr deutlich mache das ich mit diesem Basic-zeug schwer tue.

nun ja.....
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von DPunch »

Aloha

In dem Zusammenhang würde mich dann aber mal interessieren, wie Dein Dialog aussieht, wenn Du z.B.
Extras -> Makros -> Makro ausführen
oder Extras -> Makros -> Makros verwalten anklickst.
Oder auch das Fenster, das Dir beim Klick auf die Schaltfläche "Objekt-Katalog" in der IDE (also da, wo Der Makro-Code steht) angezeigt wird.

Und was die Ferndiagnose angeht:
Ich wundere mich schlicht und ergreifend, dass Du zwar schon eine ganze Zeit jede Menge Fragen zur Basic-Programmierung stellst und ja auch selber Codeschnipsel postest, aber anscheinend nicht die Bibliothek identifizieren kannst, in der ein bestimmtes Makro liegt.
Das hat dann auch nicht viel mit diesem Basic-Zeug per se zu tun, sondern das findet man entweder durch ein wenig herumklicken heraus oder man nimmt sich 2 Minuten Zeit für Google mit einer Suchanfrage ala "open office basic bibliothek".
Nicht mehr und nicht weniger wollte ich damit ausdrücken, und es sollte wie gesagt auch kein persönlicher Angriff sein, auch wenn Du es anscheinend so aufgefasst hast.
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von clag »

Hallo DPunch,

nach endloser Sucherei habe ich in einer nicht angezeigten Symbolleiste nun einen Button gefunden der ein Fenster "Objekte" öffnet !
das nun aber nichts anderes macht wie die einzelnen Teile vom ImagesEmbedder anzuzeigen ?
wobei der Hauptaufruf genau so im meinem Makro lautet !?

also ich verstehe nicht wie ich deinen Rat umsetzen soll bzw wie, wo, was ich tun muss,
damit der "embedder" gleich beim ersten Aufruf aus meinem Makro heraus funktioniert ?

vielleicht kannst du es noch einmal ganz einfach "SAU geeignet" erläutern ?
embedder-02.png
embedder-02.png (18.12 KiB) 488 mal betrachtet
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von DPunch »

Aloha
Wie komma4 schon sagt, die Basic-Bibliothek des Addons ist nicht geladen.
Durch das manuelle Starten navigierst Du in diese Bibliothek, wodurch sie auch automatisch geladen wird - beim Aufruf per Makro musst Du das aber explizit angeben, dass die Bibliothek geladen werden soll, sonst sind natürlich alle Funktionen und Prozeduren darin unbekannt.
Das ist der Knackpunkt.
Von da an ging es nur noch darum, in welcher Bibliothek die Prozedur untergebracht ist.
In Deinem Fall ist es also die Bibliothek "Embedder".
Deshalb änderst Du den Beispielcode

Code: Alles auswählen

	If NOT Globalscope.BasicLibraries.isLibraryLoaded("myLibrary") Then
		Globalscope.BasicLibraries.loadLibrary("myLibrary")
	End If
einfach um in

Code: Alles auswählen

	If NOT Globalscope.BasicLibraries.isLibraryLoaded("Embedder") Then
		Globalscope.BasicLibraries.loadLibrary("Embedder")
	End If
Der Codeausschnitt bewirkt nichts anderes, als dass die Bibliothek "Embedder" (in der Deine embedImages(...)-Prozedur liegt) geladen wird, so sie es denn nicht bereits geladen ist.
Wenn Du den Beispielcode also einfach vor dem Aufruf der fraglichen Prozedur einfügst, sollte Dein Problem behoben sein.
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von clag »

Hallo DPunch,

mit den zusätzlichen Zeilen funktioniert der Aufruf des "Imageembedder" auch bei dem ersten Aufruf aus dem Makro heraus!
nur wieso entsteht nicht das selbe Problem bei dem ersten Aufruf des "Imageembedder" aus dem Menü ?

auf jeden Fall tut das Makro jetzt so wie es soll,

also Danke für deine Geduld.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von DPunch »

Aloha

Wie schon erwähnt:
Dadurch, dass Du z.B. beim Menupunkt "Makro ausführen" in die Bibliothek navigieren musst (sprich sie mit dem "Pluszeichen" aufklappst), wird sie automatisch geladen - ab diesem Zeitpunkt sind alle Prozeduren und Funktionen darin bekannt, bis Du Open Office wieder schliesst.
Ein einfaches Makro "klappt" aber nicht nicht ohne explizite Anweisung den Bibliothek-Container "auf".
Rufst Du eine Prozedur, wie z.B. "embedImages(...)" per Makro auf, wird zur Runtime zuerst im gleichen Modul wie die aufrufende Prozedur / Funktion nach einer so benannten Prozedur gesucht, danach in allen bekannten (geladenen) Bibliotheken.
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Fehlermeldung beim Aufruf ImagesEmbedder

Beitrag von clag »

Hallo DPunch,

noch ein Danke hinterher, für deine letzte Erläuterung,
das sind Zeilen die mir dem Unwissenden, StarBasic ein klein wenig näher bringen ................
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten