letzte Änderung:
03.01.2021
Bankverwaltete SEPA-Dauerlastschriften, also Daueraufträge, die von der Bank automatisch ausgeführt werden, sind sämtlich Einzellastschriften. Sie können zwar schön im Onlinebanking der Bank angelegt werden, aber leider nicht „mal eben“ per Massenänderung angepasst werden. Für einen Kegelclub ist das Onlinebanking per Browser einigermaßen geeignet, für einen etwas größeren Verein wird eine Beitragsanpassung von echten Daueraufträgen zu einer Mammutaufgabe.
Als Kassenwart eines Vereins mit einer geerbten langen Einzugsliste stehe ich nun davor, hunderte zum allergrößten Teil nahezu gleicher bankverwalteter Daueraufträge einigermaßen effizient anpassen zu müssen. Wenn ich pro Anpassung nur eine Minute rechne – allein der Seitenaufbau der Liste dauert ja bereits mehr als 20 Sekunden – komme ich bei 400 Lastschriften auf 400 Minuten. Ohne Pause also über 6 Stunden „dumme Arbeit“. Keine echte Option für mich.
Ich habe mir überlegt, dass dies Problem mittels HBCI-Signaturdatei auf Profi cash und einer automatischen Windows-Steuerungssoftware lösbar sein müsste, sofern man diese selbst programmieren kann. Geeignete Makroprogramme zeichnen die Mausbewegungen und Tastatureingaben auf und können per Skriptbefehl, möglichst per Editor und Maus, optimiert werden.
Meine andere Alternative wäre gewesen, die SEPA-Basislastschriften auszulesen und in softwareverwaltete Daueraufträge zu wandeln (Anleitung siehe hier).
Welche Makrolösung nehmen?
Gesucht habe ich gezielt nach einer quelloffenen (open-source) und kostenlosen Lösung. Sie musste programmierbar sein und Mausbewegungen und Tastatureingaben aufnehmen und automatisiert abspielen können. Nach etwas Recherche bin ich relativ schnell bei „Pulover’s Macro Creator“ gelandet und kann dieses Programm wirklich empfehlen. Das Programm ist in deutscher Sprache übersetzt, unterstützt das Kopieren ganzer Abschnitte und beherrscht Schleifen (Loops), Abbruchbedingungen, Variablen sowie Labels und legt seine Makros in einer Textdatei ab, die ich mit Notepad++ bearbeiten und wieder in das Programm laden kann. Nahezu perfekt für meine Zwecke.
Wann lohnt sich die Einarbeitung in eine Makrolösung?
Ich bin ehrlich: Selbst bei 2 Stunden „doofer“ manueller Massenänderung hätte ich schon keine Lust mehr, dafür bin ich irgendwie nicht geeignet. Für mich wäre die gefühlte Lohnt-sich-der-Aufwand-Grenze also bestimmt schon früh erreicht gewesen.
Bei allem Ehrgeiz sollte man sich aber auch hier überlegen: Können mir andere Leute bei der Aufgabe helfen, nach dem Motto: „Viele Hände, schnelles Ende“?
Aber man darf auch fragen, wie schön man die Lösung findet und ob man beim Lernen den Wissensgewinn noch anderweitig einsetzen kann. Mir fällt da einiges ein.
Wie sieht nun meine Lösung aus?
Ich werde hier keine komplette Anleitung schreiben, das bringt nicht viel, denn dafür sind auch die Anforderungen zu unterschiedlich. Dazu kommt, dass das von mir Programm sehr komplex ist und viel mehr Funktionen hat, als ich benötige. Ich hatte aber auch aktuell keine Lust, mich in diese Software so tief einzuarbeiten, so dass meine eingesetzte Lösung eher „quick and dirty“ ist. Dies soll also nur eine Anregung sein.
Voreinstellung in Profi cash:
In Profi cash 11.x speichere ich als erstes mein HBCI-Passwort unter „Stammdaten“, „HBCI-Verwaltung“ und „Bearbeiten“ ab, damit ich die Passwortabfrage nicht auch noch im Makrorekorder belegen muss.
Abschalten des Protokolldrucks: Der Ausdruck ist bei mir unnötig, deaktiviert wird der Druck unter „Stammdaten“, „Firmenkonfiguration“. Unnötig kompliziert wurde es bei mir, weil ich ein PDF erzeugen wollte, das habe ich nachher neu gemacht. (Selbst das könnte aber das Makro-Tool lösen.)
Erster Schritt: Durchspielen der Menüs
Den Bestand der SEPA-Dauerlastschriften rufe ich über das Menü „Tagesgeschäft“, „Verwaltung terminierter Aufträge/Daueraufträge“ ab. „Bestand holen“ ab.
Die Änderung erfolgt per Button „Ändern“ und Erfassen der Änderung.
Die Änderung muss mit dem Klick auf „Ändern“ bestätigt werden.
Danach kommt eine Sicherheitsabfrage, die ich ebenfalls bestätigen muss und der Dauerauftrag wird sofort online geändert, weil ich das Passwort ja gespeichert habe. Wurde der Protokolldruck nicht abgestellt, müsste noch der Ausdruck abgewartet werden oder – wie in meinem Fall – als PDF abgelegt werden. Ich werde das abschalten.
Anschließend lande ich wieder in der Liste, die oberste Zeile ist automatisch markiert.
Meine Überlegung: Wie würde ich als fauler Mensch vorgehen, wenn ich den Bildschirm nicht beobachten möchte und alle Aufträge der Reihe nach ändern müsste?
Ich würde mir in der Änderungsliste merken, wie weit ich gekommen bin und mit den Cursortasten einfach bis zum nächsten Änderungsauftrag herunterwandern, also beim 100sten Auftrag 100x die Cursor-down Taste drücken.
In der nächsten „Runde“ müsste ich dann nur alles wiederholen und den 101sten Auftrag auswählen, usw.
Da ich die Aufträge nicht einfach alle stumpf ändern darf, einige Daueraufträge dazwischen sind auch anderer Natur, erledige ich diese Aufgabe über mehrere Tage hinweg in übersichtlichen Paketen.
Tipps zur Makroprogrammierung:
Es ist sinnvoll, bei der Aufnahme (Rekording) immer von einem definierten Punkt aus zu starten und dies am gleichen Rechner, damit die Menüs und Mausklicks zu den Koordinaten passen. Dazu sollte man das Programm in den Vollbildmodus schalten und in meinem Fall habe ich das Dauerauftrags-Menü immer bereits direkt aufgerufen und die oberste Zeile markiert.
Die Mausbewegungen selbst müssen nicht mit aufgezeichnet werden. Die Koordinaten der Klicks reichen aus, unter den Einstellungen (Menü unter „Optionen“) kann man die Aufzeichnung der Mausbewegungen abschalten. Wenn man das nämlich nicht macht, hat man extrem viele Zeilen und das ganze wird echt unübersichtlich, wie ich im ersten Versuch merken musste.
Pausen später anpassen: Dadurch kann man sich beim Aufnehmen Zeit nehmen und jeden Schritt überdenken.
Bei der Aufnahme: Man sollte immer die Fenster und Zeilen und Eingabefelder anklicken, dann passt es auch, wenn man außerhalb der Eingaben gelandet ist. Es ist auch sinnvoll – sofern das programmseitig noch möglich ist, Tastatur-Kürzel zu verwenden. In Profi cash geht dies leider nicht mehr bei allen Feldern. Das Editieren und Finden der Passagen ist dann später einfacher. Ein Beispiel: Druck auf „Enter“ bestätigt den hinterlegten Button, z.B. bei der „Wirklich ändern?“-Sicherheitsfrage.
Mit der Kommentarfunktion kann man sich gut orientieren (rechte Maustaste), übersichtlich sind auch Label.
Eine Schleife (Loop) programmiert man mit F9. Ich brauche das für die Cursorsteuerung per Tastatur (x-Mal down). Vorher den aufgenommenen Tastendruck markieren. Die Durchläufe können anschließend editiert werden, das benötigt man auch, weil man ja am Anfang sicherlich nicht die richtige Stelle trifft und später zum Massenändern.
Ein neues Makro wird gestartet z.B. mit F10 oder dem roten Knopf. Dann zum Programm wechseln und das Aufnehmen starten mit F9. Beendet wird es ebenfalls mit F9.
Die Tests kann man vereinfachen, indem man z.B. die Wiedergabe steuert.
Tastendrücke kann man einfach nacherfassen, wenn man die Maus auf dem Icon ruhen lässt. Nicht wundern: Kombinationstaste (STRG…) werden separat erfasst.
Läuft ein Auftrag zufriedenstellend durch, kann man die Programmschritte mit Markieren, Kopieren und Einfügen vervielfältigen. Da die Tastaturbefehle bei mir anscheinend nicht immer funktionierten, nutze ich das Kontextmenü (rechte Maustaste).
Pausenzeit nach der Datenübertragung: Der Bankserver reagiert nicht immer gleich, es kann also länger dauern, als beim ersten Test! Passen Sie die Pausenzeiten großzügiger an.
Am Samstag kam ich mit 30 Sekunden aus, Sonntag Abend habe ich am Ende 60 Sekunden eingetragen…
Variable einsetzen: Direkt am Programmstart setze ich die Zählervariable, die ich zwischenzeitlich in der Schleife verwende.
Da dies natürlich nur einmal gesetzt werden darf, kommt direkt dahinter der Label, die Sprungadresse. Zu dieser Stelle springt das Programm per „Goto-Befehl „am Schluss, wenn der Abbruch noch nicht erreicht ist. Der Befehl für „Goto“ und „Label“ setzen ist gleich.
Die Variable wird in der Loop-Schleife in Prozentzeichen gesetzt, also der Befehl: „Wiederhole Zaehl mal die Schleife“.
Am Schluss des Programms erhöhe ich den Zaehler um 1…
…und im nächsten Schritt schaue ich in einer IF-Abfrage, ob das Skript beendet werden soll, weil es den gewünschten Endstand (350) erreicht hat. Wenn nicht, dann wird das Label „Start“ angesprungen.
Ist der Zaehler nach Erhöhung um 1 noch kleiner als die Abbruchbedingung, wird der Goto-Befehl ausgeführt. Netterweise kann man das sogar auswählen.
Kann man sicherlich schöner machen, aber was soll’s, Hauptsache, es geht.
Bearbeiten mit Editor Notepad++
Mit Suchen und Ersetzen kann die Skripte anpassen.
Die Kommentarfunktion und die Label helfen beim Wiederfinden der relevanten Stellen.
WICHTIG:
Besonderheiten beim genossenschaftlichen Rechenzentrum: Änderungen funktionieren nur, wenn der Dauerauftrag – egal ob Lastschriften oder Überweisungen – bereits einmal gebucht wurde. Also einmal ändern geht, zweimal Ändern nicht! Zwischenzeitlich muss also der Dauerauftrag ausgeführt worden sein. #ISSO würden die Kollegen sagen. „Works as designed“ sagt meines Wissens das Rechenzentrum…
So sieht der einfache Ablauf aus.
meine Skriptdatei zum Kopieren
Folgenden Text markieren und mit STRG-C in die Zwischenablage nehmen und in einem Editor einfügen. Die Datei mit der Endung PMC speichern und mit dem Pulover’s Macro Creator (halt „PMC“) laden. Die absoluten Mauspositionen müssen natürlich angepasst werden. Bei mir läuft Profi cash 11.72 auf Full HD-Auflösung.
Ich kann keine Haftung für das ordnungsgemäße Funktionieren übernehmen. In unserem Fall wird der Jahresbeitrag auf 20,00 Euro geändert („Betrag“ suchen).
[PMC Globals]|None||
[PMC Code v5.3.8]|F3||1|Window,2,Fast,0,1,Input,-1,-1,1|1|Proficash
Context=None|
Groups=New Group:1
1|[Assign Variable]|Zaehl := 320|1|0|Variable|Expression||||1|
2|[Label]|Start|1|0|Label|||||2|
3|WinActivate||1|333|WinActivate||Verwaltung SEPA-Dauerlastschriften ahk_class xcash1310wialog0|||3|
4|[Pause]||1|100|Sleep|||||5|
5|Left Move & Click|777, 161 Left, Down|1|0|Click|||||6|
6|[Pause]||1|63|Sleep|||||7|
7|Left Move & Click|777, 161 Left, Up|1|0|Click|||||8|
8|LControl Down|{LControl Down}|1|0|Send|||||9|
9|Home|{Home}|1|10|Send|||||10|
10|LControl Up|{LControl Up}|1|20|Send|||||12|
11|[Pause]||1|2000|Sleep|||||14|
12|[LoopStart]|LoopStart|%Zaehl%|0|Loop|||Schleife_Start||15|
13|Down|{Down}|1|0|Send|||||17|
14|[Pause]||1|20|Sleep|||||18|
15|[LoopEnd]|LoopEnd|1|0|Loop|||||19|
16|[Pause]||1|3000|Sleep|||hier kann man noch eingreifen, wenn man sich verzählt hat||20|
17|Left Move & Click|117, 571 Left, Down|1|0|Click|||||21|
18|[Pause]||1|100|Sleep|||||22|
19|Left Move & Click|117, 571 Left, Up|1|0|Click|||||23|
20|[Pause]||1|250|Sleep|||||24|
21|WinActivate||1|0|WinActivate||SEPA-Dauerlastschrift ändern (ID: 1zmDPxJlAqZJrWE+3Wg_2) ahk_class xcash1310wialog0|||25|
22|2|{2}|1|0|Send|||Betrag_A||26|
23|[Pause]||1|200|Sleep|||||27|
24|0|{0}|1|0|Send|||Betrag_B||28|
25|[Pause]||1|200|Sleep|||||29|
26|Left Move & Click|627, 372 Left, Down|1|0|Click|||||30|
27|[Pause]||1|63|Sleep|||||31|
28|Left Move & Click|627, 372 Left, Up|1|0|Click|||||32|
29|[Pause]||1|200|Sleep|||||33|
30|Enter|{Enter}|1|0|Send|||Wirklich Ändern Frage?||34|
31|[Pause]||1|200|Sleep|||||35|
32|WinActivate||1|0|WinActivate||Profi cash ahk_class #32770|||36|
33|Left Move & Click|309, 54 Left, Down|1|0|Click|||||37|
34|[Pause]||1|100|Sleep|||||38|
35|Left Move & Click|309, 54 Left, Up|1|0|Click|||||39|
36|[Pause]||1|60000|Sleep|||||40|
37|LControl Down|{LControl Down}|1|0|Send|||||41|
38|Up|{Up}|1|0|Send|||||42|
39|LControl Up|{LControl Up}|1|0|Send|||||42|
40|[Add Variable]|Zaehl += 1|1|0|Variable|||||42|
41|Compare Variables|Zaehl < 350|1|0|If_Statement|||Breche ab bei Erreichen. Diese dann oben beim Zaehler eintragen.||43|
42|[Goto]|Start|1|0|Goto|||||45|
43|[End If]|EndIf|1|0|If_Statement|||||46|
44|WinActivate||1|333|WinActivate||Verwaltung SEPA-Dauerlastschriften ahk_class xcash1310wialog0|||47|