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