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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.