🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro Fehlermeldung

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
kukur
! Supporter - Spende !
Beiträge: 13
Registriert: Di 15. Okt 2024, 12:42

Makro Fehlermeldung

Beitrag von kukur » Di 15. Okt 2024, 12:56

Ich habe eine Tabelle mit ca. 100 Zeilen und 4 Spalten, die ich nach den Spalten 2 - 4 (numerisch) sortieren möchte. Wenn ich diese Sortierung in Einzelschritten (zuerst Tabelle markieren, dann; Tabelle - Sortieren ...) durchführe, klappt das problemlos. Wenn ich aber die gleichen Schritte als Makro aufzeichne und speichere, geht das zwar noch problemlos, beim Makro ausführen gibt es dann aber die Fehlermeldung: "BASIC-Syntaxfehler. Erwartet: Sub." Was lief da schief?

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro Fehlermeldung

Beitrag von karolus » Di 15. Okt 2024, 13:22

kukur hat geschrieben:
Di 15. Okt 2024, 12:56
"BASIC-Syntaxfehler. Erwartet: Sub." Was lief da schief?
…das korrekte Abspeichern nach der Aufzeichnung!?

und ausserdem bist du hier im falschen Unterforum … besser aufgehoben wäre das Thema in Basic und Makro oder wenigstens Calc
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

kukur
! Supporter - Spende !
Beiträge: 13
Registriert: Di 15. Okt 2024, 12:42

Re: Makro Fehlermeldung

Beitrag von kukur » Do 17. Okt 2024, 16:37

Ich habe das Makro dort abgespeichert, wo es das Programm vorschlägt (siehe Anhang) und das so abgespeicherte Makro danach ausgeführt, was zur Fehlermeldung (siehe Anhang) geführt hat.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro Fehlermeldung

Beitrag von karolus » Do 17. Okt 2024, 17:15

kukur hat geschrieben:
Do 17. Okt 2024, 16:37
(siehe Anhang)(siehe Anhang)
Nein Ich sehe ihn nicht!
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

kukur
! Supporter - Spende !
Beiträge: 13
Registriert: Di 15. Okt 2024, 12:42

Re: Makro Fehlermeldung

Beitrag von kukur » Do 17. Okt 2024, 17:23

Sorry, das war ein Missgeschick. So sollte es klappen.
Dateianhänge
Basic Syntaxfehler.jpg
Basic Syntaxfehler.jpg (89.44 KiB) 1828 mal betrachtet
Speicherort.jpg
Speicherort.jpg (25.67 KiB) 1828 mal betrachtet

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro Fehlermeldung

Beitrag von karolus » Do 17. Okt 2024, 17:49

Zeile 1: EMREM
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

kukur
! Supporter - Spende !
Beiträge: 13
Registriert: Di 15. Okt 2024, 12:42

Re: Makro Fehlermeldung

Beitrag von kukur » Do 17. Okt 2024, 18:34

Danke, das hat zunächst einmal geholfen, es gibt beim Befehl "Makro ausführen" keine Fehlermeldung mehr. Aber: wenn ich den Makro - der eine Tabelle nach drei Kriterien sortieren sollte - ausführe, erscheint einfach das Sortierfenster und ich muss den ganzen Sortierprozess von Hand eingeben.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro Fehlermeldung

Beitrag von karolus » Do 17. Okt 2024, 19:11

Das ist ja seltsam … Wenn ich ⇒ Daten ⇒ Sortieren …(mit drei Kriterien etcpp.) ausführe und aufzeichne kommt was ganz anderes raus wie bei Dir, wie kann es sein das deine Aufzeichnung nicht funktioniert? 8-)

Code: Alles auswählen

sub Aufzeichnung_DAten_Sortieren_dialog

dim document   as object
dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args2(13) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ByRows"
args2(0).Value = true
args2(1).Name = "HasHeader"
args2(1).Value = true
args2(2).Name = "CaseSensitive"
args2(2).Value = false
args2(3).Name = "NaturalSort"
args2(3).Value = false
args2(4).Name = "IncludeAttribs"
args2(4).Value = true
args2(5).Name = "UserDefIndex"
args2(5).Value = 0

args2(6).Name = "Col1"   '1.kriterium
args2(6).Value = 2        ' Spalte B…
args2(7).Name = "Ascending1"
args2(7).Value = true     '…Aufsteigend

args2(8).Name = "Col2"    '2. Kriterium
args2(8).Value = 1        'Spalt  A…
args2(9).Name = "Ascending2"
args2(9).Value = true     'Aufsteigend

args2(10).Name = "Col3"   '3. Kriterium
args2(10).Value = 3        'Spalte C
args2(11).Name = "Ascending3"
args2(11).Value = false    'Absteigend

args2(12).Name = "IncludeComments"
args2(12).Value = false
args2(13).Name = "IncludeImages"
args2(13).Value = true

dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args2())


end sub
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

kukur
! Supporter - Spende !
Beiträge: 13
Registriert: Di 15. Okt 2024, 12:42

Re: Makro Fehlermeldung

Beitrag von kukur » Do 17. Okt 2024, 20:14

Vielleicht liegt es daran, dass ich die Tabelle im Writer (und nicht mit Calc) sortieren will. Also mit Extras > sortieren.
Ich bin ganz neu bei LibreOffice und dabei, von MS Office umzusteigen. In MS Word funktioniert dieser Makro einwandfrei auf Anhieb, aber ich habe verstanden, dass die Makros von MS Office nicht auf LibreOffice übertragbar sind, sondern dass man sie dort neu schreiben muss, und das scheint ja nun nicht auf Anhieb zu gehen.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro Fehlermeldung

Beitrag von karolus » Do 17. Okt 2024, 21:27

Hallo

Also doch in writer! … da stösst die Makro-Aufzeichnung an seine Grenzen.

Daher mal schnell zusammengehackt in python:

Code: Alles auswählen

def sort_writer_table(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.TextTables["Tabelle1"]   #trag hier den Namen der Tabelle ein!
    header, *data =sheet.DataArray # Kopfzeile ? nicht sortieren?
    out = [ header ]
    out.extend(sorted(data,
                      key=lambda row: (float(row[1]),   #2te Spalte
                                       float(row[2]),   #3te Spalte
                                       float(row[3])))) #4te Spalte
    sheet.DataArray = out    
sollte einigermassen selbsterklärend sein…
bei den Spalten die absteigend sortiert werden sollen, setzt du einfach ein -zeichen vor »float«
zum organisieren von python nimmst du am besten apso.oxt von hier
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


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.



Antworten