Probleme beim Laden eines Dialogs
Verfasst: Mi 10. Sep 2025, 16:24
Hallo liebe Experten,
derzeit beschäftige ich mich in LO mit Dialogen. Nachdem ich mir ein recht einfaches Muster gebastelt hatte, wollte ich diesen Dialog testweise per Makro öffnen, bin aber zunächst kläglich gescheitert, als ich es mit der Function LoadDialog() aus den Anwendungsmakros und -dialogen versucht hatte. Obwohl diese Bibliothek ordnungsgemäß geladen war, hat das Makro in der letzten Zeile (beim Setzen des Rückgabewerts) abgebrochen mit der Fehlermeldung
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.container.NoSuchEIementException
Message: Dg_01_Vorbereiten
Erstaunlicherweise hat dasselbe Makro dann aber problemlos meinen Dialog geöffnet, nachdem ich es in ein Modul derselben Bibliothek kopiert habe, in der sich auch das aufrufende Makro und der zu öffnende Dialog befinden. Daraus schließe ich, dass der Parameter LibName von mir nicht nur den Namen der Bibliothek erwartet sondern auch das Dokument, in dem sich diese Bibliothek befindet, sofern es nicht das momentan aktive Dokument ist.
Meine Ausstattung:
Windows 11, LO 25.2.5.2
Verhält es sich tatsächlich so oder sehe ich Gespenster?
Bin für jede Hilfe dankbar und freue mich jetzt schon darauf, wieder etwas dazu zu lernen.
Vielen Dank vorab und liebe Grüße
vom Martin
Mit den beiden nachstehend gezeigten Makros gelingt es mir nun, den Dialog zu öffnen. Trotzdem würde ich aber lieber mit den Bordmitteln von LO arbeiten.
derzeit beschäftige ich mich in LO mit Dialogen. Nachdem ich mir ein recht einfaches Muster gebastelt hatte, wollte ich diesen Dialog testweise per Makro öffnen, bin aber zunächst kläglich gescheitert, als ich es mit der Function LoadDialog() aus den Anwendungsmakros und -dialogen versucht hatte. Obwohl diese Bibliothek ordnungsgemäß geladen war, hat das Makro in der letzten Zeile (beim Setzen des Rückgabewerts) abgebrochen mit der Fehlermeldung
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.container.NoSuchEIementException
Message: Dg_01_Vorbereiten
Erstaunlicherweise hat dasselbe Makro dann aber problemlos meinen Dialog geöffnet, nachdem ich es in ein Modul derselben Bibliothek kopiert habe, in der sich auch das aufrufende Makro und der zu öffnende Dialog befinden. Daraus schließe ich, dass der Parameter LibName von mir nicht nur den Namen der Bibliothek erwartet sondern auch das Dokument, in dem sich diese Bibliothek befindet, sofern es nicht das momentan aktive Dokument ist.
Meine Ausstattung:
Windows 11, LO 25.2.5.2
Verhält es sich tatsächlich so oder sehe ich Gespenster?
Bin für jede Hilfe dankbar und freue mich jetzt schon darauf, wieder etwas dazu zu lernen.
Vielen Dank vorab und liebe Grüße
vom Martin
Mit den beiden nachstehend gezeigten Makros gelingt es mir nun, den Dialog zu öffnen. Trotzdem würde ich aber lieber mit den Bordmitteln von LO arbeiten.
Code: Alles auswählen
REM ***** BASIC *****
Sub Dialog1Show()
objDlg = pLoadDialog("Standard", "Dg_01_Vorbereiten")
objDlg.Execute()
End Sub
Function pLoadDialog(ByVal strLib As String, _
ByVal strDlg As String, _
Optional ByVal objCnt As Variant)
' Lädt einen benutzerdefinierten Dialog.
'
' Parameter:
' strLib Name der Bibliothek (Speicherort des Dialogs)
' strDlg Name des Dialogs
' objCnt [Optional] Name des Containers für die Bibliothek mit dem Dialog
Dim objLib As Object
Dim objLibDlg As Object
Dim objRtmDlg As Object
If IsMissing(objCnt) Then objCnt = DialogLibraries
objCnt.LoadLibrary(strLib)
objLib = objCnt.GetByName(strLib)
objLibDlg = objLib.GetByName(strDlg)
objRtmDlg = CreateUnoDialog(objLibDlg)
pLoadDialog() = objRtmDlg
End Function