Autor
|
Thema: Zellinhalte vor jeglichem Zugriff schützen (2186 mal gelesen)
|
Gregi Mitglied
Beiträge: 274 Registriert: 26.03.2004
|
erstellt am: 28. Jul. 2004 13:14 <-- editieren / zitieren --> Unities abgeben:
Gibt es eine Möglichkeit, einige Zellen einer Tabelle vor jeglichem Zugriff zu schützen? Ich möchte also, das ein User dann nur mit Passwort diese Zellen SEHEN, geschweige denn ÄNDERN kann. Ich habe zunächst daran gedacht, die entsprechenden Spalten auszublenden. Diese könnten ja aber über ein anderes EXCEL Blatt ausgelesen werden. Wem fällt da was ein? ------------------ Grüßle Gregi P.S.: Bitte nicht böse sein, kann leider aus technischen Gründen keine Units vergeben! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Jul. 2004 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
Hi Gregi, hm, versuchs mal so v.o.n.u.: - alle Zellen unter Format|Schutz|freigeben - die zu schützenden Zellen Format|schutz|sperren & ausblenden - Blattschutz setzen ... is aber so richtig eigentlich nur für Formeln geeignet. lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
melzig Mitglied Maschinenbautechniker
Beiträge: 396 Registriert: 15.01.2003
|
erstellt am: 28. Jul. 2004 15:02 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
@ Gregi Wieviele Werte sind denn in der Spalte drin ? Wenn es keine Massen sind eventuell in ein Formular aufnehmen und dort per Passwort die Schaltflächen auf sichtbar schalten. Das ganze VBA-Project muß dann ebenfalls geschützt werden. Muß mit den Werten irgendwas gerechnet werden? Bei Startreks Variante kann man die Daten über ein anderes Blatt auslesen. Außerdem werden dabei ja nur die Formeln ausgeblendet. Schreib mal etwas genauer was du machen willst. Tschüß Frank!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Jul. 2004 15:51 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
Hai nochmal, oder sowas zB, für Texte: und dann eben Passwortabfrage und Function Schluessel wieder um 1 zurücksetzen
Code:
Sub krypt() Dim cell As Range For Each cell In Range("C1:C10") If Not IsNumeric(cell) And cell <> "" Then cell = schluessel(cell.Value) End If Next End SubFunction schluessel(s As String) As String Dim i& For i = 1 To Len(s) schluessel = schluessel & Chr(Asc(Mid(s, i, 1)) + 1) Next End Function
Aber Frank hat scho Recht, was willste genau machen ? ... und eines is ja wohl klar, was im Leben ist schon richtig sicher lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gregi Mitglied
Beiträge: 274 Registriert: 26.03.2004
|
erstellt am: 28. Jul. 2004 16:02 <-- editieren / zitieren --> Unities abgeben:
Also vielen Dank erst mal an Euch! Ich will mal versuchen, die Situation zu beschreiben. Wir haben hier ein Kalkulationsprogramm mit EXCEL. Dies ist sehr umfangreich. In diesem Programm gibt es Spalten, in denen Preise drinstehen, die aber ggf. ausgeblendet werden sollen können. Diese Aufgabe wurde nun mir zugeteilt. Bisher war es so gelöst, daß die entsprechenden Spalten einfach ausgeblendet wurden und die Tabelle mit einem Blattschutz versehen wurde. Aber wie Ihr ja auch schon richtig angemerkt habt, kann man diese ja trotzdem mit einem neuen Blatt auslesen. Daher finde ich Nancy's Variante mit dem Verschlüsseln sehr interessant. Allerdings handelt es sich bei uns um Zahlen, die verschlüsselt werden müßten. ------------------ Grüßle Gregi P.S.: Bitte nicht böse sein, kann leider aus technischen Gründen keine Units vergeben! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Jul. 2004 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
Hi Gregi, hm, versuchs mal ganz einfach so Sub krypt() Dim cell As Range For Each cell In Range("C1:C10") If cell <> "" Then cell = schluessel(cell.Value) Next End Sub Function schluessel(s As String) As String Dim i& For i = 1 To Len(s) schluessel = schluessel & Chr(Asc(Mid(s, i, 1)) + 10) Next End Function lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Jul. 2004 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
|
melzig Mitglied Maschinenbautechniker
Beiträge: 396 Registriert: 15.01.2003
|
erstellt am: 28. Jul. 2004 16:47 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
@ Gregi @ Nancy Vorsicht Ihr braucht die richtigen Werte für die Berechnung. Mit den Zahlen mußt du das aber anders machen, da du ja die richtigen Werte für deine Berechnung brauchst. Du denkst dir einen Algorithmus für deine Verschlüsselung aus. Aber nicht bloß +12 oder so, etwas komplizierter. Diesen Algoritmus (Vwerschlüsselung) legt du in dein VBA_project, so das nur du Ihn ausführen kannst.Damit Verschlüsselst du die Spalte mit den Preisen.Außerdem Kannst du Sie ja noch ausblenden und sperren sowieso. Jetzt definierst du eine Private Function (z.B. uncrypt) in der genau die Umkehrfunction deines Algorithmus drin steht. In allen rechnungen wo sonst der normale Preiswert genommen wurde Z.B. "C1" steht dann uncrypt(C1). Jetzt muß du noch den Schutz mit den Formeln ausblenden anwenden und die Felder mit den Berechnungen sperren (Blattschutz). Außerdem solltest du auch das VBA Project schützen. Vielleicht kann Nancy dazu noch was Schreiben. Tschüß Frank! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IMK-WELS Mitglied tech Zeichner Werkvertragsbasis Unigraphics, Solid Edge
Beiträge: 147 Registriert: 21.06.2004 Win10 64bit Spacetraveller USB 16GB RAM Nvidia Quadro K600 Solid Edge 19 (abgelaufene Lizenz)
|
erstellt am: 28. Jul. 2004 16:54 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
Hallo Gregi, Du willst nur einige Zellen oder ganze Blätter R/W schützen? was ist wenn du die zu schützenden Zellen in Blätter zusammen fasst und diese Blätter in eine ausgeblendete mappe mit passwort schiebst? dann sind die Werte da aber nicht editerbar und sichtbar. ------------------ Martin Knop Büro für technisches Zeichnen & EDV untersützte Dienstleistungen Fax: +43 676 312 87 74 od. +43 7242 351578 Email: office@imk.cc [Diese Nachricht wurde von IMK-WELS am 28. Jul. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Jul. 2004 17:05 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
...hm, also erstmal Nummernblock und Alphanum scheint sich nix zu nehmen, aber: 1234567890 [+10] ;<=>?@ABC: ;<=>?@ABC: [-10] 1234567890 0,123456789 [+10] :6;<=? :6;<=? [-10] 0,1235 ????????????? Irgendwie steh' ich da grad aufm Schlauch... Naja Frank, beim Weiterrechnen wird's natürlich Mist , das ginge ja dann nur über benutzerdefinierte Funktionen [autsch]... lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 28. Jul. 2004 19:13 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
Zahlen verschlüsseln? hätte das was einfaches aber Felder nicht mit Währung Formatieren Option Explicit Const dblKey As Double = 76545425 Sub Verschluesseln() Dim rng As Range For Each rng In Range("C2:E20") If IsNumeric(rng) And rng <> "" Then rng = rng * dblKey Next End Sub Sub Entschluesseln() Dim rng As Range For Each rng In Range("C2:E20") If IsNumeric(rng) And rng <> "" Then rng = rng / dblKey Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Jul. 2004 19:29 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
|
melzig Mitglied Maschinenbautechniker
Beiträge: 396 Registriert: 15.01.2003
|
erstellt am: 28. Jul. 2004 21:30 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
@ Nancy @ Thomas 10 Unities für Nancy & Thomas Toll gemacht,aber ich glaube der Gregi braucht die realen Werte für die Kalkulation. Und wenn die Werte in anderen Berechnungen der Kalkulation verknüpft sind kommt Mist raus, da Excel mit den verschlüsselten Werten rechnet. Ich denke die Kalkulation werden mehrere bekommen (z.B. Vertreter). Die sollen das Ding auch benutzen, aber nicht die zu Grunde liegenden Einzelpreise wissen. Hier nochmal mein Vorschlag dazu: In Zelle C1 als Kontrollwert 5/3 eintragen, damit man verhindert,daß man verschlüsseltes nochmal verschlüsselt. Private Sub ver_entschluesseln() If Worksheets("Tabelle1").Range("C1").Value >= 1.66 Then For Each z In Worksheets("Tabelle1").Range("C1:C10") z.Value = crypt(z.Value) Next z Else For Each z In Worksheets("Tabelle1").Range("C1:C10") z.Value = decrypt(z.Value) Next z End If End Sub Private Function crypt(a) crypt = (3 * a / 5) ^ 0.5 End Function Private Function decrypt(a) decrypt = a ^ 2 * 5 / 3 End Function Bei der Verwendung (Berechnung) in der Tabelle müßte dann z.B. statt C2 decrypt(c2) stehen. Bei allen Feldern die Berechnungen enthalten > Formel ausblenden > Zellen Sperren. Die Spalte( mit den Preisen) ausblenden und Sperren. Blattschutz aktivieren (mit Paßwort)und das VBA-Project sperren. Außerdem sollte man den Funktionsnamen für sich behalten, bzw.die anderen Blätter löschen und das Hinzufügen von neuen Blättern unterbinden(damit kenn ich mich nicht aus). Aus anderen Dateien nützt der Funktionsname nichts, selbst wenn er bekannt ist. Ist nur ein Vorschlag! Tschüß Frank!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gregi Mitglied
Beiträge: 274 Registriert: 26.03.2004 Lenovo Thinkpad W701 Intel Core i7 X920 @ 2.00GHz 4 GB RAM NVIDIA Quadro FX 3800M -------------------------------- SolidWorks Prof. 2016 SP1 Autodesk Building Design Suite Ultimate 2015 Rhinoceros 5.0 -------------------------------- Windows 7 Enterprise SP1
|
erstellt am: 29. Jul. 2004 12:29 <-- editieren / zitieren --> Unities abgeben:
Bin begeistert! Vielen Herzlichen Dank, daß Ihr Euch so den Kopf zerbrecht! Ihr macht das wohl gerne *g Konnte es leider noch nicht ausprobieren, da ich das eher so nebenbei erledige. Aber ich setze mich gleich mal ran. Nur eins noch zu Franks Anmerkung, das das Excelblatt weiter mit den richtigen Werten rechnen muß! Kann ich ehrlich gesagt so auf anhieb gar nicht sagen, weil das echt riesig ist das Ding. Muß ich mal denjenigen interviewen, der damit täglich schafft! Also nochmals....Vielen Dank....und wenn ich könnte, würdet Ihr natürlich auch 10 U's von mir bekommen! ------------------ Grüßle Gregi P.S.: Bitte nicht böse sein, kann leider aus technischen Gründen keine Units vergeben! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gregi Mitglied
Beiträge: 274 Registriert: 26.03.2004
|
erstellt am: 29. Jul. 2004 14:16 <-- editieren / zitieren --> Unities abgeben:
So, jetzt habe ich mir das mal reingetan. Finde beide Lösungen sehr gut, wobei die von Frank auch ein weiterbenutzen des Zellwertes möglich machen würde. Wenn ich das ausprobiere habe ich allerdings ein Problem, was ich schon mal hatte und nicht wußte wie ich es lösen sollte. Und zwar wenn ich in einer Zelle die Uncrypt-Funktion verwende, funktionert dies zwar grundsätzlich, wird aber nicht automatisch auf Stand gehalten. Wenn ich also z.B. über einen Button die Ver-Entschlüsselungsroutine aufrufe, dann muß ich die Zellen, bei denen ich die Uncrypt-Funktion nutze erst auf F2 und ENTER drücken, dann zeigt er den korrekten Wert an. Application.Volatile ändert daran komischerweise auch nichts. Wißt Ihr woran das liegt? ------------------ Grüßle Gregi P.S.: Bitte nicht böse sein, kann leider aus technischen Gründen keine Units vergeben! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
melzig Mitglied Maschinenbautechniker
Beiträge: 396 Registriert: 15.01.2003 Intel Xeon CPU E5-1650v2 @3,5 GHz; 32 GB RAM Quadro K4000 3 GB 2x 20" TFT LG Flatron L2000CN Space Pilot 3D Connexion Windows 7 Professional 64 Bit Inventor Professional 2015 -64-Bit-Edition- Inventorintegration für Autodesk Productstream Professional 2011
|
erstellt am: 29. Jul. 2004 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
|
Gregi Mitglied
Beiträge: 274 Registriert: 26.03.2004
|
erstellt am: 29. Jul. 2004 14:55 <-- editieren / zitieren --> Unities abgeben:
Das dürfte nicht das Problem sein. Habe Office 97 und da gibt es zwar kein Häckchen für automatisch berechnen sondern Optionsbuttons und der ist auf automatische Berechnung eingestellt!?!?!?! ------------------ Grüßle Gregi P.S.: Bitte nicht böse sein, kann leider aus technischen Gründen keine Units vergeben! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
melzig Mitglied Maschinenbautechniker
Beiträge: 396 Registriert: 15.01.2003 Intel Xeon CPU E5-1650v2 @3,5 GHz; 32 GB RAM Quadro K4000 3 GB 2x 20" TFT LG Flatron L2000CN Space Pilot 3D Connexion Windows 7 Professional 64 Bit Inventor Professional 2015 -64-Bit-Edition- Inventorintegration für Autodesk Productstream Professional 2011
|
erstellt am: 29. Jul. 2004 15:24 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
@ Gregi Öffne den VisualBasic Editor und klicke auf die Tabelle in der die Berechnungen stehen(z.b. Tabelle1). Jetzt öffnest du das Eigenschaftsfenster (im Editor). Dort findest du einen Eintrag welcher "EnableCalculation" heißt. Ich vermute er hat bei dir den Wert "false" > stelle den Wert auf "true" und die Sache sollte funktionieren. Tschüß Frank! [Diese Nachricht wurde von melzig am 29. Jul. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gregi Mitglied
Beiträge: 274 Registriert: 26.03.2004
|
erstellt am: 29. Jul. 2004 16:52 <-- editieren / zitieren --> Unities abgeben:
Ich habe den Code in ein Modul kopiert, sonst funzt das mit dem DECRYPT aus EXCEL heraus bei mir nicht. Bei einem Modul wiederum kann ich diese Option "EnableCalculation" nicht anwählen. Bei der Tabelle ist es bereits gewählt. ------------------ Grüßle Gregi P.S.: Bitte nicht böse sein, kann leider aus technischen Gründen keine Units vergeben! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 29. Jul. 2004 17:05 <-- editieren / zitieren --> Unities abgeben: Nur für Gregi
|