Hallo Hans-Werner,
deine Mail hattee ich heute früh noch gelesen, mir war klar, dass
hinter dem Syntaxfehler etwas anderes stecken müsse, das ist in x
Tests bei mir durchgelaufen und stammt auch aus Jürgens Code (bis
auf die Änderung von global zu dim, die schon Thomas angesprochen
hat).
Der Dialog muss natürlich in jürgens Code fehlen, er hat ja den
Dialog mit vielen Statements selbst generiert und musste zusätzlich
Listener für seine Schaltflächen definieren und diese abfragen.
Dafür gibt es manchmal Gründe, und auch er scheint einen triftigen
Grund gehabt zu haben, aber meist ist es bequemer, den Dialog in
der Basic-IDE zu designen und im Dokument zu speichern. Die
Listener werden sicher auch dann gebraucht, bloß übernimmt das dann
LibreOffice im Hintergrund, man muss nur bei Dialog beim
gewünschten Ereignis das auszuführende Makro benennen.
Für unseren Zweck war mir ein möglichst kurzer Code wichtig, damit
ein Entwickler nicht abgeschreckt wird.
Und ein Rückgriff auf Jürgens Dokument ist auch nicht notwendig,
der Fehler tritt auch bei einem leeren Dokument auf, und auch, wenn
man ein anderes LibO-Dokument statt seines Calc-Dokuments lädt.
Da mir daran liegt, dass jemand anders das auch mit meinem Beispiel
bestätigt, bevor ich eine Bugmeldung aufmache, beschreibe ich dir
die nötigen Aktionen, es geht ziemlich schnell, das sieht nur in
der Beschreibung so groß aus.
Erzeuge ein neues Writer-Dokument (und speichere am besten gleich,
dann hasst du später nich die Unterbrechung durch den
Speichern-Dialog).
Lege einen Makro-Modul an: Extras -> Makros -> Makros verwalten ->
LibreOffice Basic... -> im Explorer links deine Datei auswählen ->
New (so steht's in meiner Version) oder Neu; dann wird dir Module1
als Name vorgeschlagen, für unseren Test brauchen wir keinen
anderen. Nach Bestätigung erscheint die Basic-IDE, wo du den
vollständigen Code durch meine Makros ersetzt (und am besten statt
dem Xray irgendeine msgbox nimmst, das ist einfacher, da hast du
recht).
Erzeuge den Dialog: Unten siehst du das Register "Module1".
Rechtsklicke rechts davon, wähle Einfügen -> Basic-Dialog. Dann
wird dir ein leerer Dialog angezeigt, Größe und Titel ist uns
wurscht. Nun musst du wahrscheinlich die Symbolleiste
Formular-Steuerelemente einblenden (du kannst sie dann gleich
wieder ausblenden) und suchst dort das Symbol für Schaltfläche,
irgendwie wohl ein Rechteck, aber das hängt vom Stil ab, der
Tooltipp zeigt es dir aber, und klickst drauf. Dann kannst du mit
der Maus innerhalb der Dialogfläche ein Rechteck für die
Schaltfläche aufziehen, Größe und Position sind irrelevant, auch
der automatisch vergebene Name kann für unsern Zweck bleiben.
Nun fehlt nur noch die Verknüpfung des zweiten Makros mit dem
Betätigen der Schaltfläche: Rechtsklick auf die gerade gezeichnete
Schaltfläche -> Eigenschaften -> im linken Teilfenster: Register
"Ereignisse" -> Schaltfläche mit den drei Punkten hinter dem Punkt
"Aktion ausführen" betätigen -> Makro... -> bei "Bibliothek" dein
Dokument auklappen, bis "Module1" erscheint, das anklicken ->
rechts "btnStart_actionPerformed" anklicken. Dann OK und nochmal OK
und speichern (das speichert den Dialog im Dokument und auch das
Dokument selbst im Dateisystem).
Dann kannst du testen. Bei mir funktionierte alles, auch nach
Schließen und Wiederöffnen von Libo, erst nach Runterfahren des
Rechners und Wiederstarten tritt der Fehler auf und bleibt dann
auch. Was zeigt, dass nicht etwas im Dokument durch das erstmalige
Ausführen geändert wird, sondern irgendwas Vages, für mich nicht
Erratbares im Zusammenspiel von BS, LibO und Dokument passiert.
Wenn ich das Dokument anschließend mit 5.3.3.1 öffne, läuft
weiterhin alles durch, mit 6.0.7.3 nicht; dazwischen habe ich
derzeit keine Version installiert. Das deckt sich mit Jürgens
Feststellung, dass sein Makro früher lief, wiewohl nicht exakt mit
seiner Angabe, aber darauf kommt es ja nicht an, wichtig ist, dass
da was passiert ist, was diesen Nebeneffekt hat. Ich werde das in
nächster Zeit eingrenzen.
Grüße
Gerhard
Am 07.04.2019 um 18:43 schrieb OoOHWHOoO:
KORREKTUR zu
https://listarchives.libreoffice.org/de/users/msg21513.html
Da muss wohl beim Kopieren aus der Mail
https://listarchives.libreoffice.org/de/users/msg21512.html irgend
etwas in die Windows-Zwischenablage geraten sein.
Jetzt kommt kein Syntaxfehler mehr und LO stürzt auch nicht ab.
Jetzt bezüglich Zeile "oDlg =
createUnoDialog(DialogLibraries.Standard.Dialog1)" die Fehlermeldung:
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: Dialog1
Da fehlt wohl ein "Dialog1". Woher nehmen wenn nicht stehlen ...
jetzt mag ich nicht mehr mit meinem Makro-Dialog-Minimalwissen
:-(( ...
Grüße
Hans-Werner ;-))
Gerhards Makro (
https://listarchives.libreoffice.org/de/users/msg21512.html ):
Option Explicit
Sub StartKopfzeile
dim oDlg as Object ' Dialogfenster
DialogLibraries.LoadLibrary("Standard") 'auch ein fester
Dialog bringt keine Änderung
oDlg = createUnoDialog(DialogLibraries.Standard.Dialog1)
oDlg.execute
End Sub
REM Aktion Pseudo-Kopfzeilen eintragen und formatieren
Sub btnStart_actionPerformed(oEvent2)
dim oDocC as Object
Dim sUrl as String
sUrl = converttoUrl("E:\TMP\Kopfzeilen_Texte.ods") '
MODIFIZIERT !
Dim zFileProperties() As New com.sun.star.beans.PropertyValue
oDocC = StarDesktop.loadComponentFromURL(sURL, "_blank",
0, zFileProperties())
MsgBox("HALLO") ' MODIFIZIERT !
End Sub
-- Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme?
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails:
https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy