🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Warum läuft dieses Makro nicht?
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Warum läuft dieses Makro nicht?
Liebe Fachleute,
diese Dateien stammen aus http://de.openoffice.info/viewtopic.php ... 15#p243900
Da ich LO benutze, würde mich interessieren, warum das Makro aus der angehängten Datei unter LO nicht läuft. Die Datensatznummer wird noch angezeigt, aber ein Briefdokument wird nicht geöffnet.
Gruß
Freischreiber
diese Dateien stammen aus http://de.openoffice.info/viewtopic.php ... 15#p243900
Da ich LO benutze, würde mich interessieren, warum das Makro aus der angehängten Datei unter LO nicht läuft. Die Datensatznummer wird noch angezeigt, aber ein Briefdokument wird nicht geöffnet.
Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Warum läuft dieses Makro nicht?
Hallo Freischreiber,
F3K Total hat sich doch in den Thread, den Du hier aufgegriffen hast (http://de.openoffice.info/viewtopic.php ... 8&start=15), angehängt. Warum verfolgst Du das jetzt plötzlich auf zwei Foren weiter? Hier triffst Du häufig auf die gleichen Leute ...
Gruß
Robert
F3K Total hat sich doch in den Thread, den Du hier aufgegriffen hast (http://de.openoffice.info/viewtopic.php ... 8&start=15), angehängt. Warum verfolgst Du das jetzt plötzlich auf zwei Foren weiter? Hier triffst Du häufig auf die gleichen Leute ...
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Warum läuft dieses Makro nicht?
Hallo Robert,
die Antwort von F3K Total kannte ich noch nicht, als ich diesen Thread hier eröffnete. Außerdem könnte es ja sein, daß das Makro nur unter Libreoffice nicht läuft und das hier ist das richtige Forum dafür.
Die Ausgangsfrage war eigentlich ganz einfach (dachte ich): Wie bringe ich beliebige Feldinhalte vom Formular aus in ein Writer-Dokument?
Früher gab es wohl mal eine Lösung ohne Makro:
http://www.libreoffice-forum.de/viewtop ... 305#p15314
Die scheint aber nicht mehr zu funktionieren. Dann muß es wohl eine Makro-Lösung sein. Davon gibt es zwei, von denen eine einigermaßen funktioniert (bis auf Listenfelder):
http://www.libreoffice-forum.de/viewtop ... =10#p27487
Und die andere (diese hier) bei mir überhaupt nicht.
Ich kann auch technisch nicht beurteilen, welches der bessere Ansatz ist.
Wenn ihr hier sagt, die erste ist besser, dann versuche ich, die Geschichte mit der korrelativen Unterabfrage zu verstehen, wobei mir schon unklar ist, ob dieser SQL-Code in die Hauptabfrage kommt oder eine extra Abfrage ist, und wo genau sie im Formular auftaucht, so daß das Makro die Felder plötzlich lesen kann.
Wenn ihr die zweite empfehlt, dann muß ich irgendwie versuchen, das Makro in LO zum Laufen zu bringen, was bisher einfach nicht geht.
Welcher Weg am Schluß klappt, ist mir persönlich egal. Ich weiß nur, daß ich nicht den Kopf dazu habe, Makroprogrammierung zu lernen. Es muß an diesem Punkt eine Lösung aus der Tüte sein. Wenn ich dazu AO statt LO benutzen muß, wäre das auch ok. Nur Microsoft würde ich gerne vermeiden.
Ich bin ganz ehrlich auch im Moment gefrustet über dieses ganze Softwarepaket Star-/Open-/Libreoffice, das es schon seit zig Jahren gibt, und bei dem man immer noch naheliegende Aufgaben nicht ohne die Hilfe von Fachleuten lösen kann - für die ich übrigens sehr dankbar bin!
Gruß
Freischreiber
die Antwort von F3K Total kannte ich noch nicht, als ich diesen Thread hier eröffnete. Außerdem könnte es ja sein, daß das Makro nur unter Libreoffice nicht läuft und das hier ist das richtige Forum dafür.
Die Ausgangsfrage war eigentlich ganz einfach (dachte ich): Wie bringe ich beliebige Feldinhalte vom Formular aus in ein Writer-Dokument?
Früher gab es wohl mal eine Lösung ohne Makro:
http://www.libreoffice-forum.de/viewtop ... 305#p15314
Die scheint aber nicht mehr zu funktionieren. Dann muß es wohl eine Makro-Lösung sein. Davon gibt es zwei, von denen eine einigermaßen funktioniert (bis auf Listenfelder):
http://www.libreoffice-forum.de/viewtop ... =10#p27487
Und die andere (diese hier) bei mir überhaupt nicht.
Ich kann auch technisch nicht beurteilen, welches der bessere Ansatz ist.
Wenn ihr hier sagt, die erste ist besser, dann versuche ich, die Geschichte mit der korrelativen Unterabfrage zu verstehen, wobei mir schon unklar ist, ob dieser SQL-Code in die Hauptabfrage kommt oder eine extra Abfrage ist, und wo genau sie im Formular auftaucht, so daß das Makro die Felder plötzlich lesen kann.
Wenn ihr die zweite empfehlt, dann muß ich irgendwie versuchen, das Makro in LO zum Laufen zu bringen, was bisher einfach nicht geht.
Welcher Weg am Schluß klappt, ist mir persönlich egal. Ich weiß nur, daß ich nicht den Kopf dazu habe, Makroprogrammierung zu lernen. Es muß an diesem Punkt eine Lösung aus der Tüte sein. Wenn ich dazu AO statt LO benutzen muß, wäre das auch ok. Nur Microsoft würde ich gerne vermeiden.
Ich bin ganz ehrlich auch im Moment gefrustet über dieses ganze Softwarepaket Star-/Open-/Libreoffice, das es schon seit zig Jahren gibt, und bei dem man immer noch naheliegende Aufgaben nicht ohne die Hilfe von Fachleuten lösen kann - für die ich übrigens sehr dankbar bin!
Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Warum läuft dieses Makro nicht?
Hallo Freischreiber,
dass ein Makro unter LO nicht, aber unter AOO doch läuft dürfte wohl eine sehr seltene Ausnahme sein. Auch auf der openoffice.info-Liste gibt es viele Leute, die gar nicht mit OpenOffice oder AOO arbeiten.
Die Unterabfrage aus dem anderen Thread wird ganz normal so in eine Abfrage eingebaut. Die Abfrage ist Grundlage des Formulars. Die Felder der korrellierenden Unterabfrage brauchen in dem Formular gar nicht aufzutauchen. Das interessiert den Serienbrief nicht. Den Serienbrief interessiert nur ein klar erkennbarer Datensatz. Und der wird über den Primärschlüssel (aus der Abfrage) ausgewählt.
Ich werde mir die beiden Dateien, die Du angehängt hast, einmal kurz anschauen.
Gruß
Robert
dass ein Makro unter LO nicht, aber unter AOO doch läuft dürfte wohl eine sehr seltene Ausnahme sein. Auch auf der openoffice.info-Liste gibt es viele Leute, die gar nicht mit OpenOffice oder AOO arbeiten.
Die Unterabfrage aus dem anderen Thread wird ganz normal so in eine Abfrage eingebaut. Die Abfrage ist Grundlage des Formulars. Die Felder der korrellierenden Unterabfrage brauchen in dem Formular gar nicht aufzutauchen. Das interessiert den Serienbrief nicht. Den Serienbrief interessiert nur ein klar erkennbarer Datensatz. Und der wird über den Primärschlüssel (aus der Abfrage) ausgewählt.
Ich werde mir die beiden Dateien, die Du angehängt hast, einmal kurz anschauen.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Warum läuft dieses Makro nicht?
Hallo Freischreiber,
("OpenOffice.info, deutsches Forum rund um OpenOffice.org und LibreOffice") ist für LibreOffice auch richtig.
Außerdem siehst du, dass F3K Total, Robert und auch andere - in beiden Foren gleichwohl helfend antworten.
nur so nebenbei: Das Forum, in dem du zuerst warstAußerdem könnte es ja sein, daß das Makro nur unter Libreoffice nicht läuft und das hier ist das richtige Forum dafür.
("OpenOffice.info, deutsches Forum rund um OpenOffice.org und LibreOffice") ist für LibreOffice auch richtig.
Außerdem siehst du, dass F3K Total, Robert und auch andere - in beiden Foren gleichwohl helfend antworten.
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Warum läuft dieses Makro nicht?
Hallo Robert,
achso: dieses funktionierende Makro hier, das ich zur Klarstellung unten nochmal einfüge, braucht eigentlich gar keine Formularfelder, sondern nimmt sich aus dem Formular nur die Angabe des gerade selektierten Datensatzes, und holt sich die Feldinhalte aus der zugrundeliegenden Tabelle oder Abfrage?
Und deine Idee ist, diese Abfrage so aufzuhübschen, daß keine Verweise drinstehen (AnredeID=2), sondern Text (Herr, Frau etc.)?
Aber wenn es so ist, müßte doch in dem Abschnitt "Textfelder holen" irgendwo ein Verweis auf die Quelltabelle/-abfrage drin sein?
Viele Grüße
Freischreiber
achso: dieses funktionierende Makro hier, das ich zur Klarstellung unten nochmal einfüge, braucht eigentlich gar keine Formularfelder, sondern nimmt sich aus dem Formular nur die Angabe des gerade selektierten Datensatzes, und holt sich die Feldinhalte aus der zugrundeliegenden Tabelle oder Abfrage?
Und deine Idee ist, diese Abfrage so aufzuhübschen, daß keine Verweise drinstehen (AnredeID=2), sondern Text (Herr, Frau etc.)?
Aber wenn es so ist, müßte doch in dem Abschnitt "Textfelder holen" irgendwo ein Verweis auf die Quelltabelle/-abfrage drin sein?
Viele Grüße
Freischreiber
Code: Alles auswählen
Sub Main
oDoc = thisComponent
oForm = oDoc.Drawpage.Forms(0)
oColumns = oForm.Columns
REM Pfad zur Vorlage zusammensetzen
Globalscope.BasicLibraries.loadLibrary("Tools")
sURL = oDoc.Parent.URL
sURL = DirectoryNameoutofPath(sURL,"/") & "/"
sURL = sURL & "Briefvorlage zur Neue Datenbank.ott"
REM Vorlage öffnen
Dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "AsTemplate"
args(0).Value = True
newDoc = StarDesktop.loadComponentFromURL(sURL,"_blank",0,args)
REM Textfelder holen
enumTextfields = newDoc.Textfields.createEnumeration
Do While enumTextfields.hasMoreElements
thisTextfield = enumTextfields.nextElement
If thisTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") Then
sColumnname = thisTextfield.PlaceHolder
If oColumns.hasByName(sColumnname) Then
nIndex = oForm.findColumn(sColumnname)
thisTextfield.Anchor.String = oForm.getString(nIndex)
End If
End If
Loop
End Sub
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Warum läuft dieses Makro nicht?
Hallo Freischreiber,
ich habe beide Dateien geladen, die Datenbank angemeldet und bekomme den Inhalt des jeweils aktuellen Serienbriefes in meinem Heimatverzeichnis abgelegt. Da liegen jetzt "Fröhlich0.odt", "Fröhlich1.odt", "Fröhlich2.odt" und "Mustermann0.odt". Getestet mit LO 4.1.5.3 unter OpenSUSE 12.3 64bit.
Vielleicht zeigt der Dateimanager die Dateien nicht direkt an? Wenn der Pfad von Dir falsch wäre, dann käme eine entsprechende Meldung.
Du musst den Serienbrief auf eine Abfrage aufbauen, nicht auf eine Tabelle. Das reicht.
MailMerge.CommandType=1
MailMerge.Command="Abfrage..."
Gruß
Robert
ich habe beide Dateien geladen, die Datenbank angemeldet und bekomme den Inhalt des jeweils aktuellen Serienbriefes in meinem Heimatverzeichnis abgelegt. Da liegen jetzt "Fröhlich0.odt", "Fröhlich1.odt", "Fröhlich2.odt" und "Mustermann0.odt". Getestet mit LO 4.1.5.3 unter OpenSUSE 12.3 64bit.
Vielleicht zeigt der Dateimanager die Dateien nicht direkt an? Wenn der Pfad von Dir falsch wäre, dann käme eine entsprechende Meldung.
Du musst den Serienbrief auf eine Abfrage aufbauen, nicht auf eine Tabelle. Das reicht.
MailMerge.CommandType=1
MailMerge.Command="Abfrage..."
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Warum läuft dieses Makro nicht?
Hallo Robert,
jetzt laufen zwei Sachen ineinander:
Das funktionierende Makro mit dieser "Textfield"-Anweisung, das hier oben nochmal steht, das beruht doch nicht auf einer Tabelle oder Abfrage, sondern auf Textfeldern, oder? Das würde ich gerne weiterverfolgen. Bezieht sich darauf die Sache mit der Unterabfrage? In diesem Makro kommt eine Mailmerge-Anweisung nämlich gar nicht vor.
Und das gar nicht funktionierende, das bei dir unter Linux geht, geht bei mir unter Windows XP immer noch nicht. Die Pfade stimmen, als einziges entsteht eine temporäre Datei "BriefAnDatensatz.odb.lck" mit dem Inhalt "HSQLLOCK...(plus nichtkopierbare Zeichen). Die Datei kann hier nicht hochgeladen werden wg. verbotener Endung, zip geht auch nicht, und beim Schließen der Datenbank ist sie wieder weg.
Dieses Makro, das in den beiden ganz oben hochgeladenen Dateien drin ist, würde ich gerne vermeiden.
Mit verwirrtem Gruß
Freischreiber
jetzt laufen zwei Sachen ineinander:
Das funktionierende Makro mit dieser "Textfield"-Anweisung, das hier oben nochmal steht, das beruht doch nicht auf einer Tabelle oder Abfrage, sondern auf Textfeldern, oder? Das würde ich gerne weiterverfolgen. Bezieht sich darauf die Sache mit der Unterabfrage? In diesem Makro kommt eine Mailmerge-Anweisung nämlich gar nicht vor.
Und das gar nicht funktionierende, das bei dir unter Linux geht, geht bei mir unter Windows XP immer noch nicht. Die Pfade stimmen, als einziges entsteht eine temporäre Datei "BriefAnDatensatz.odb.lck" mit dem Inhalt "HSQLLOCK...(plus nichtkopierbare Zeichen). Die Datei kann hier nicht hochgeladen werden wg. verbotener Endung, zip geht auch nicht, und beim Schließen der Datenbank ist sie wieder weg.
Dieses Makro, das in den beiden ganz oben hochgeladenen Dateien drin ist, würde ich gerne vermeiden.
Mit verwirrtem Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Warum läuft dieses Makro nicht?
Hallo Freischreiber,
wenn hier jetzt unterschiedliche Sachen durcheinanderlaufen, dann liegt das daran, dass der Titel dieses Threads "Warum läuft dieses Makro nicht?" ist - mit 2 Beispieldateien. Darauf habe ich geantwortet. Das habe ich abgesendet kurz nachdem Du eine völlig andere Variante ins Spiel brachtest.
Wenn ich die Eroffnung dieses Threads sehe erwartest Du, dass eine Datei geöffnet wird. Das ist aber im Makro gar nicht vorgesehen. Sie wird lediglich direkt unter dem entsprechenden Namen abgespeichert. Die Datei müsstest Du jetzt laden - so etwas wie StarDesktop.loadComponentFromURL(...).
Mailmerge-Kommandos passen natürlich nur zu Deinem ursprünglichen Anliegen.
Die odb.lck-Datei ist eine Datei, die die Datenbank vor einem doppelten Schreibzugriff sichert. Das hat nichts mit der Ausgabe der Serienbriefe zu tun. Die Serienbriefe müssen bei Dir irgendwo in einem C:/Tmp-Verzeichnis (oder so ähnlich) liegen. Ich habe das nicht bei mir abgespeichert, da ich die Pfade natürlich an mein System anpassen musste.
Schön beschrieben ist übrigens der ganze Mailmerge-Weg hier: http://www.starbasicfaq.de/WiekannmanSe ... l#Zweig251
Auch das Makro mit den Textfeldern müsste sich übrigens dazu nutzen lassen. Die Abfrage ist die Datenquelle für das Formular, die Spalten werden mit Namen vom Prinzip her aus der Abfrage ausgelesen, wenn ich den Code richtig deute.
Gruß
Robert
wenn hier jetzt unterschiedliche Sachen durcheinanderlaufen, dann liegt das daran, dass der Titel dieses Threads "Warum läuft dieses Makro nicht?" ist - mit 2 Beispieldateien. Darauf habe ich geantwortet. Das habe ich abgesendet kurz nachdem Du eine völlig andere Variante ins Spiel brachtest.
Wenn ich die Eroffnung dieses Threads sehe erwartest Du, dass eine Datei geöffnet wird. Das ist aber im Makro gar nicht vorgesehen. Sie wird lediglich direkt unter dem entsprechenden Namen abgespeichert. Die Datei müsstest Du jetzt laden - so etwas wie StarDesktop.loadComponentFromURL(...).
Mailmerge-Kommandos passen natürlich nur zu Deinem ursprünglichen Anliegen.
Die odb.lck-Datei ist eine Datei, die die Datenbank vor einem doppelten Schreibzugriff sichert. Das hat nichts mit der Ausgabe der Serienbriefe zu tun. Die Serienbriefe müssen bei Dir irgendwo in einem C:/Tmp-Verzeichnis (oder so ähnlich) liegen. Ich habe das nicht bei mir abgespeichert, da ich die Pfade natürlich an mein System anpassen musste.
Schön beschrieben ist übrigens der ganze Mailmerge-Weg hier: http://www.starbasicfaq.de/WiekannmanSe ... l#Zweig251
Auch das Makro mit den Textfeldern müsste sich übrigens dazu nutzen lassen. Die Abfrage ist die Datenquelle für das Formular, die Spalten werden mit Namen vom Prinzip her aus der Abfrage ausgelesen, wenn ich den Code richtig deute.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Warum läuft dieses Makro nicht?
Hallo Robert,
Entschuldigung. Den Weg mit dem Mailmerge-Makro habe ich abgehakt, weil hier irgendwas spinnt. Ich finde keine erzeugten Dateien.
Das Textfield-Makro funktioniert, das werde ich einbauen.
Müßte der Name der Tabelle oder Abfrage nicht irgendwo auftauchen im Makrotext? Für mich sieht es so aus, als schreibt das Makro nur ab, was gerade im Formular in Textfeldern steht.
Es ist vermutlich am besten, wenn ich jetzt einfach anfange, eine Datenbank aufzubauen, soweit ich komme, und diese dann, wenn etwas fehlt oder nicht geht, hier einstelle mit gezielten Fragen, oder?
Viele Grüße
Freischreiber
Entschuldigung. Den Weg mit dem Mailmerge-Makro habe ich abgehakt, weil hier irgendwas spinnt. Ich finde keine erzeugten Dateien.
Das Textfield-Makro funktioniert, das werde ich einbauen.
Müßte der Name der Tabelle oder Abfrage nicht irgendwo auftauchen im Makrotext? Für mich sieht es so aus, als schreibt das Makro nur ab, was gerade im Formular in Textfeldern steht.
Es ist vermutlich am besten, wenn ich jetzt einfach anfange, eine Datenbank aufzubauen, soweit ich komme, und diese dann, wenn etwas fehlt oder nicht geht, hier einstelle mit gezielten Fragen, oder?
Viele Grüße
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.