Zeile trotz Blattschutz in andere Tabelle verschieben

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Karolus »

Hallo

Du müsstest halt während des Kopiervorgangs den Blattschutz aufheben…was aber in der Konsequenz dazu führt das die "Unwissenden" wieder die Tabelle zerstören können.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Thomas Mc Kie
******
Beiträge: 919
Registriert: Mo, 12.04.2010 00:37

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Thomas Mc Kie »

Ich weiß nicht ob du Karolus richtig verstanden hast.
Man kann ja im Makro selbst vor dem Verschieben den Blattschutz aufheben, und direkt nach dem Verschieben (also der einen Zeile mit dem Code) wieder aktivieren. Das geht ziemlich simpel und erfordert somit nur zwei zusätzliche Zeilen in deinem Makro.

Grüße

Thomas
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Karolus »

Die einzig andere Möglichkeit ist schlicht den Kopiervorgang nur zuzulassen, wenn zuvor der Blattschutz auf normalem Weg (per UI und Passworteingabe) aufgehoben wird.
Den Schutz setzen kannst du dann auch im Makro nach dem Kopieren:

Code: Alles auswählen

……

source_sheet.protect("dein_passwort")
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Karolus »

Thomas Mc Kie hat geschrieben: Fr, 03.03.2017 12:07 Ich weiß nicht ob du Karolus richtig verstanden hast.
Man kann ja im Makro selbst vor dem Verschieben den Blattschutz aufheben, und direkt nach dem Verschieben (also der einen Zeile mit dem Code) wieder aktivieren. Das geht ziemlich simpel und erfordert somit nur zwei zusätzliche Zeilen in deinem Makro.

Grüße

Thomas
Dann kann man den Blattschutz doch gleich weglassen, weil jetzt wieder jeder nur auf den Button klicken muss.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Thomas Mc Kie
******
Beiträge: 919
Registriert: Mo, 12.04.2010 00:37

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Thomas Mc Kie »

Ok, an passwortgeschütz habe ich nicht gedacht (stand auch nirgendwo). Ich dachte, es wäre sowieso einfach nur der Blattschutz aktiviert, ohne Passwort. Aber du kannst ja entweder das Passwort im Makro einbauen (sofern auch jeder das Verschieben machen darf) oder du fragst das Passwort beim Verschieben ab. Da ich mit Passwörtern im Blattschutz noch nicht gearbeitet habe, weiß ich aber nicht zu 100% ob das im Makro möglich ist (es würde mich aber überraschen, wenn es nicht möglich ist).
Falls das für mehrere Zeilen nacheinander zu machen wäre, würde es natürlich auch sinnvoll sein, das nicht jedesmal sondern nur einmal abzufragen. Das wird dann aber umständlicher (weil z.B. doch noch ein weiterer Button für ein anderes Makro notwendig wäre).

Grüße
Thomas
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Karolus »

Antonia_BD hat geschrieben: Fr, 03.03.2017 13:54 Also Schritt für Schritt

In eine Zeile werden Daten eingegeben, irgendwann sollen diese Daten ins Archiv (Tabelle B) verschoben werden. Der User wählt mit dem Cursor also die eine Zelle der Zeile X aus und klickt den Button, durch das Makro wird automatisch die ausgewählte Zeile X in das Archiv verschoben und und verschwindet in der Haupttabelle (Tabelle A)

Das Passwort würde ich ungern den anderen nennen, also durch den gleichen "Archiv"-Button müsste man "unprotecten" und nach dem kopieren/verschieben wieder protecten....

Ist das möglich?
Ja!

Code: Alles auswählen

…
sourcesheet.unprotect("superstrenggeheim")
…
sourcesheet.protect("superstrenggeheim")
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von F3K Total »

Hi,
ich setze noch einen drauf. Wenn man die Tabellen mit Makro per unprotect/protect entsperren/schützen möchte, kann jeder, der in die Makros guckt, das Passwort sehen. Damit das nicht passieren kann, ist es möglich auch die Makros zu verschlüsseln. Geht aber nur in einer eigenen Makro-Bibliothek, die Bibliothek Standard lässt sich nicht verschlüsseln.
Anbei ein Beispiel, die Bibliothek NEUE_BIBLIOTHEK ist mit dem Passwort 1111 geschützt. Darin kann man erst nach dem entschlüsseln, das Passwort für den Tabellenschutz sehen.
VB.png
VB.png (5.15 KiB) 12918 mal betrachtet
Doof ist, dass es Unterschiede zwischen LibreOffice und ApacheOpenOffice gibt.
Die Makros der verschlüsselten Bibliothek laufen aktuell unter ApacheOpenOffice nur, wenn sie auch darunter verschlüsselt wurde.
Gruß und viel Erfolg R
Dateianhänge
SCHUTZ.ods
(18.93 KiB) 135-mal heruntergeladen
Thomas Mc Kie
******
Beiträge: 919
Registriert: Mo, 12.04.2010 00:37

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Thomas Mc Kie »

F3K Total hat geschrieben: So, 05.03.2017 13:28... ist es möglich auch die Makros zu verschlüsseln. Geht aber nur in einer eigenen Makro-Bibliothek, die Bibliothek Standard lässt sich nicht verschlüsseln.
Danke für die Info, hatte ich auch nicht im Geringsten auf dem Schirm. *Info_merk*
Grüße
Thomas
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Stephan »

Thomas Mc Kie hat geschrieben: Mo, 06.03.2017 08:56
F3K Total hat geschrieben: So, 05.03.2017 13:28... ist es möglich auch die Makros zu verschlüsseln. Geht aber nur in einer eigenen Makro-Bibliothek, die Bibliothek Standard lässt sich nicht verschlüsseln.
Danke für die Info, hatte ich auch nicht im Geringsten auf dem Schirm. *Info_merk*
Grüße
Thomas
Aber Achtung: die Verschlüsselung der Makros ist auf diesem Wege seit vielen Jahren nicht perfekt (früher ging es meiner Erinnerung nach), denn Teile des Makrocode bleiben sichtbar und jeder der weiß wie man die ods-DAtei entzippen kann kann sie u.U. einsehen, so z.B. im aktuellen Beispiel, denn dort ist in Module1.bin das Passwort sichtbar:



Gruß
Stephan
Dateianhänge
Dateiauszug_module1.gif
Dateiauszug_module1.gif (15.47 KiB) 12873 mal betrachtet
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Stephan »

Was mache ich falsch, wenn ich den Code einfüge (gleich nach "sub" und kurz vor "end") und ich dann den Fehler "Objektvariable nicht belegt" bekomme ?
Wie die Fehlermeldung sagt ist eine Objektvariable nicht belegt, da es nur eine Objektvariable in den 2 Codezeilen gibt ist auch klar Welche.

Fülle also die Variable mit Inhalt, z.B.:

Code: Alles auswählen

sourcesheet = ThisComponent.Sheets(0)
…
sourcesheet.unprotect("superstrenggeheim")
…
sourcesheet.protect("superstrenggeheim")
Gruß
Stephan
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Karolus »

Wenn du deinen Code nicht postest, musst du wenigsten in der Lage das sinngemässe sourcesheet durch den Namen zu ersetzen den du im Code dafür benutzt.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von F3K Total »

Stephan hat geschrieben: Mo, 06.03.2017 09:06 denn dort ist in Module1.bin das Passwort sichtbar:
Ist ja ein Ding, das habe ich auch noch nicht gewusst. Komisch, nur eines von beiden ist sichtbar...

Gruß R
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Stephan »

Ist ja ein Ding, das habe ich auch noch nicht gewusst. Komisch, nur eines von beiden ist sichtbar...
Ja, das ist etwas komisch, ich kann auch nur sagen das man im Einzelfall nachsehen muss, aber das Ganze ist natürlich ein ganz gravierendes Problem, weil garkeine komplette Verschlüsselung erfolgt.
In älteren Programmversionen (meiner Erinnerung nach deutlich älter als OOo 3.2.0) gab es dieses Problem nicht und die Verschlüsselung des Codes war einwandfrei- mit solchen alten Programmversionen verschlüsselte Dateien funktionierten auch in anderen, neueren Programmversionen von OOo und AOO aber schon nichtmehr in LO-Versionen die herauskamen nachdem LO irgendwas am Verschlüsselungsmechanismus geändert hatte (zeitlich ungefähr ab dem Zeitpunkt als es in LO nicht mehr möglich war geschützte xls-Tabellenblätter ohne Passworteingabe zu entsperren).

Der ganze Sachverhalt ist sehr ärgerlich, aber ich kann auch nicht sagen in wieweit das die OO/LO-Programmierer als Fehler verstehen oder ob es andere Gründe gibt die dieses Verhalten hervorrufen ohne das es explixit gewollt wäre. Ich hatte bisher auch keine Zeit das alle gründlich nachzurecherchieren - falls jemand mehr Hintergrundwissen hat, nur her damit..


GRuß
Stephan
Thomas Mc Kie
******
Beiträge: 919
Registriert: Mo, 12.04.2010 00:37

Re: Zeile trotz Blattschutz in andere Tabelle verschieben

Beitrag von Thomas Mc Kie »

Aber für den Schutz gegen versehentliche Änderungen unbedarfter Anwender langt natürlich eigentlich schon das Passwort im Makro abzulegen, das Makro zu verschlüsseln ist dann noch etwas besser auch um den etwas neugierigeren Anwender, der schon mal was von Makros gehört hat, auszusperren. Für den Anwendungszweck wie er hier im Thema genannt wird, wäre das also meiner Meinung nach absolut ausreichend. Muss aber natürlich der Themenersteller EDIT die Themenerstellerin ;-) beantworten.
Danke für die Zusatzinfos, ich denke das ist ganz nützlich.
Grüße
Thomas
Antworten