Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Wert aus Userform übergeben
#1
Hallo liebe VBA-Freunde,

ich habe eine Idee, welche ich mit meinem derzeitigem Wissensstand noch nicht umsetzen kann....


Sollzustand:

1. Exceldokument öffnen
2. Meldung erscheint, in welcher über das Betätigen eines Buttons eine Auswahl getroffen werden muss. [Person 1] oder [Person 2] oder [Person 3]
(Hierbei soll im Hintergrund wenn möglich nichts vom Dokument lesbar/identifizierbar sein)

3. Direkt nach der Auswahl, findet eine Passwortabfrage statt. (Jede Auswählbare Person hat ein eigenes Passwort.)
4. Ist das Passwort richtig, wird das Dokument komplett geöffnet.

--> Das Dokument soll sich also erst komplett öffnen lassen/einsehbar sein, wenn eine Person ausgewählt und das dementsprechende Passwort richtig eingegeben wurde.
      Bei der Userform kann ich aktuell ja diese Meldung über das "X" am oberen Meldungsrand einfach schließen und ohne Probleme fortfahren. Das sollte auch vermieden werden.

Soweit zum ersten Schritt.
Des weiteren gilt es nun die ausgewählte Person in folgende Funktion einzubetten.

Ich habe in diesem Dokument eine Tabelle, dessen Zellen ich mit einem Doppelklick mit einem "X" befüllen kann.
Jetzt soll aber hier, abhängig von der Person, welche zu Beginn definiert wurde, dementsprechend ein anderer Inhalt per Doppelklick eingefügt werden.

Person 1 --> "P1"
Person 2 --> "P2"
Person 3 --> "P3"


Das Einstiegsfenster besteht schonmal und die Funktion des Befüllens einer Zelle per Doppelklick auch. Jedoch bekomme ich den Rest nicht hin...


Vielen Lieben dank schonmal vorab für eure Bemühungen und Zeit.

Exceldokument im Anhang.

Viele Grüße

Johann


Angehängte Dateien
.xlsm   ExcelTest.xlsm (Größe: 17,1 KB / Downloads: 5)
Antworten Top
#2
Schau mal: https://www.snb-vba.eu/VBA_Userform_in_database_en.html
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3

.xlsm   ExcelTest.xlsm (Größe: 19,76 KB / Downloads: 7)

hier, reicht dir das.  login mit klick Person 1 
Pw ist "a"
Antworten Top
#4
Hallo und moin,

du bist bei weitem nicht der erste, der die Idee hat, Excel dazu zu verwenden, den Nutzer und Excel selbst einzuschränken und eine Art Rechtestrutkur einzufügen. Meistens kommen diese Ideen von Anwendern, deren Wissensstand bezüglich Excel im Allgemeinen und VBA im Besonderen noch nicht sehr weit ausgebaut ist. Daher ein paar Grundsätze (Ausnahmen gibt es sicher, die beißen sich aber wahrscheinlich mit dem Wissensstand) dazu:
Was in Excel steht ist nicht geheim.
Solange du Informationen, die du in einer Exceldatei speicherst nicht verschlüsselst, sind sie nicht Geheim. Das gilt natürlich insbesondere für die Passwörter, die du am besten nur mit einem Hash-Wert speicherst.
Was du in Excel nicht schon in der Standardsoftware effektiv schützen kannst, kannst du auch nicht mit VBA besser schützen.
Excel bietet einige Möglichkeiten des Datei, Arbeitsmappen und Blattschutzes. Wenn du die Möglichkeiten dieser drei Schutzebenen kennst, dann kannst du auch in etwa abschätzen, wie „wirksam“ du deine Daten mit VBA schützen kannst.
Der Schutz einer Exceldatei verhindert nur versehentliches Ändern.
Wer etwas ändern will, wird das in einer Exceldatei können. Lesen wird ein noch geringeres Problem sein. Wie du an der Datei von Ralf siehst, genügt es schon, die Datei ohne Makros auszuführen und der VBA-„Schutz“ ist hinüber. Aber auch der gewöhnliche Schutz lässt sich zum Beispiel durch einen einfachen Zellverweis auf eine gesperrte Zelle umgehen. Das einzige mir bekannte einigermaßen wirksame Mittel ist es, die Datei mit einem Öffnen-Passwort zu speichern (wie sehr sich ooo oder LO darum scheren sei mal dahingestellt).
Blatt- und Mappenschutz in VBA sind ein Krampf
Der Blatt- und Mappenschutz gilt grundsätzlich auch für die Änderungen mit VBA. Das heißt, du musst entweder vor jeder Änderung durch ein Makro den Schutz aufheben (Passwort im Quelltext im Klartext), oder den Schutz beim öffnen der Mappe mit der Option UserInterFaceOnly neu setzen (das funktioniert wieder bis zum öffnen ohne Makros).
Also:
Wenn du Dateneingaben mit einer Benutzer-Rechte-Struktur Daten relativ sicher erfassen willst, dann empfehle ich dir den schnellen umstieg auf eine einfache Datenbank. Da ist die Trennung in Front- und Backend, die verschlüsselte Speicherung und häufig auch eine Benutzerverfaltung als Standardaufgabe schon integriert. Und wenn es nicht integriert ist, so lässt sich das Problem doch meistens mit Standardlösungen lösen. Das Front-End kannst du dann natürlich auch als Excel-User-Form gestalten.
Noch einfacher: Versuche das Problem organisatorisch zu lösen. Warum benötigst du dieses Schutzlevel? Wie bekommst du die drei Personen dazu, trotzdem ordnungsgemäß zu arbeiten?

Viele Grüße
derHöpp
[-] Folgende(r) 3 Nutzer sagen Danke an derHoepp für diesen Beitrag:
  • shift-del, Klaus-Dieter, RPP63
Antworten Top
#5
Hallöchen,

Du könntest einige Dinge in Abhängigkeit vom angemeldeten User automatisieren.
Wie schon zu lesen war, solltest Du einen Arbeitsmappenschutz verwenden, der bereits beim Öffnen greift.
Um den Zugriff für den Ottonormaluser zu erschweren, solltest Du alle Blätter ausblenden (xlVeryHidden) und das VBA-Projekt schützen.
Eingeblendet werden die Blätter nur, wenn ein definierter User die Datei öffnet und die Ausführung von Makros erlaubt ...

Kannst auch hier im Forum z.B. nach "Schutz" suchen, das Thema wird nicht selten angeschnitten.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Danke für die schnellen Antworten.
Ich werde das mit dem Schutz nochmal überdenken.

Hat jemand eine schnelle Lösung zu meinem zweiten Punkt?

___________________________________________________________________________________________________________________________
Ich habe in diesem Dokument eine Tabelle, dessen Zellen ich bei einem Doppelklick mit einem "X" befüllen kann.
Jetzt soll aber hier, abhängig von der Person, welche zu Beginn definiert wurde, dementsprechend ein anderer Inhalt per Doppelklick eingefügt werden.

Person 1 --> "P1"
Person 2 --> "P2"
Person 3 --> "P3"


___________________________________________________________________________________________________________________________

Vielen Dank vorab.

VG
Johann
Antworten Top
#7
Moin!
Melden sich die Personen am "eigenen" Windows an?
Dann kann man Environ("Username") abfragen.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim isect As Range
    Set isect = Application.Intersect(Target, Range("D6:M14"))
    If Not isect Is Nothing Then
      Select Case Environ("Username")
        Case "Person 1": Target = "P1"
        Case "Person 2": Target = "P2"
        Case "Person 3": Target = "P3"
        Case Else
          MsgBox "Sie sind nicht berechtigt, sinnlos doppelt zu klicken!", vbCritical
      End Select
      Cancel = True
    End If
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Man könnte die Berechtigkeit ermitteln mittels eine Datei in einem Gebiet wo der User kein Zugang hat.
z.B. eine eigene website.

Ich könnte das so machen:
Wenn der User eine Username "Bernd" hat und es keine Datei namens 
"http://www.snb-vba.eu/bestanden/Bernd.pwd" gibt, hat der User kein Zugang zur Datei.

Code:
Sub M_snb()
  c00 = "success"
  With CreateObject("MSXML2.XMLHTTP")
      .Open "GET", "http://www.snb-vba.eu/bestanden/" & Environ("name") & ".pwd", False
      .send
      If .Status = 404 Then c00 = "failed"
  End With
 
  MsgBox c00
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste