Probleme mit .LoadComponentFromURL in LibreOffice

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

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Probleme mit .LoadComponentFromURL in LibreOffice

Beitrag von Stephan »

Hallo,

Das Folgende bezieht sich auf LibreOffice 5.0.4.2, ob es weitere Versionen betrifft kann ich momentan nicht sagen, nicht betroffen sind aber z.B. OOo 3.3.0, AOO 4.1.2 und LibreOffice 4.2.7.2.

Ich kann ohne Probleme folgenden Basic-Code ausführen:

Code: Alles auswählen

Sub Main
	auswahl = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
	

	auswahl.appendFilter("ODF-Textdateien (*.odt)","*.odt")
	
	antwort = auswahl.execute
	If antwort = 1 Then
		dateiname = auswahl.Files(0)

		Dim load_prop(0) As New com.sun.star.beans.PropertyValue
		load_prop(0).Name = "Hidden"
		load_prop(0).Value = True
		import_datei = StarDesktop.loadComponentFromURL(auswahl.Files(0), "_blank", 0, load_prop())
		Msgbox import_datei.dbg_properties
	End If	
End Sub
jedoch scheitert ein eigentlich äquivalenter Code in der anhängenden Extension, der wie folgt aussieht:

Code: Alles auswählen

Sub datei_waehlen()
	Dim auswahl AS Object
	Dim dateiname
	Dim tmp_1
	
	'-->zur Sicherheit evtl. schon geöffnete andere Datei schliessen:
	'tmp_1 = ConvertToURL(dia_gr.getControl("txt_datei").Text)
	'If FileExists(tmp_1) Then 
	'	import_datei.Close(True)
	'	dia_gr.model.getByName("cmd_ok").enabled = 0
	'End If
	'----------------------------------------------------------------
	
	auswahl = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
	
	If tc.SupportsService("com.sun.star.sheet.SpreadsheetDocument") Then
		auswahl.appendFilter("ODF-Tabellendateien (*.ods)","*.ods")
	ElseIf tc.SupportsService("com.sun.star.text.TextDocument") Then
		auswahl.appendFilter("ODF-Textdateien (*.odt)","*.odt")
	End If
	
	antwort = auswahl.execute
	If antwort = 1 Then
		dateiname = auswahl.Files(0)
		'dia_gr.getControl("txt_datei").Text = ConvertFromURL(dateiname)
		'dia_gr.Model.getByName("txt_datei").HelpText = ConvertFromURL(dateiname)
		'Msgbox dia_gr.Model.getByName("txt_datei").dbg_properties
		
		'fortschrittsanzeige("Es wird initialisiert... ")
		'Wait 500 '?
		
		'Datei laden und Absatzvorlagen lesen
		Dim load_prop(0) As New com.sun.star.beans.PropertyValue
		load_prop(0).Name = "Hidden"
		load_prop(0).Value = False
		import_datei2 = StarDesktop.loadComponentFromURL(auswahl.Files(0), "_blank", 0, load_prop())
		
		
		'listbox_fuellen("PageStyles", import_datei)
		
		'#
		Msgbox import_datei2.dbg_properties

End Sub
Die hier gemachten Auskommentierungen habe ich bereits zu Testzwecken vorgenommen um den Code maximal zu vereinfachen, trotzdem bleibt das Objekt "Import_datei2" leer, LO meldet "Basic Laufzeitfehler. Objektvariable nicht belegt"

Der Fehler kann wie folgt reproduziert werden:

-anliegende Extension installieren
-neues Tabellen oder Textdokument öffnen
-Makro über das Hilfemenü Eintrag "Seitenvorlagen importieren" starten
-im erscheinenden Dialog mit der Schaltfläche rechts oben eine Datei auswählen

wohlgemerkt bisher nur unter LibreOffice 5.0.4.2 beobachtet.


Hat jemand einen Hinweis?


Gruß
Stephan

P.S.
das Ganze fiel mir aktuell auf als ich die anhängende Extension als Workaround für folgende Frage anbieten wollte:
viewtopic.php?f=2&t=66962#p262631
Dateianhänge
Vorlagen_importieren-0.9.2.oxt
(9.14 KiB) 375-mal heruntergeladen