Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Passwort Generator

VBA Passwort Generator
amintire
Hallo alle zusammen,
vielleicht hat ja jemand eine Idee oder Vorschlag.
Also, aus Alphabet im Bereich F2:CO2 soll ein Passwort oder Schlüssel konstruiert werden so, das die Buschstaben z u f ä l l i g und ganz schön in gleiche Menge vertelt sind. Das heist, eine (egal welche) Buchstabe darf nicht mehr als andere (egal welche) Buchstabe vorkommen.
Das Passwort oder Schlüssel soll in Celle F8 generiert werden.
Länge der Passwort oder Schlüssel steht in Celle F17.
https://www.herber.de/bbs/user/63251.xls
Vielen Dank für Eure Bemühungen.
Gruß amintire
Anzeige
AW: VBA Passwort Generator
18.07.2009 13:39:48
ransi
HAllo
Versuch mal so:
Diesen Code in ein Modul:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit


Public Function machs(A As Integer) As String
Const strText As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!""§$%&()[]{}\?**#:;,.-+<>"
Dim B() As Byte
Dim Z As Integer
Dim I As Integer
Dim tmp
B = StrConv(strText, vbFromUnicode)
Randomize
For I = 0 To UBound(B)
    Z = Int(UBound(B) * Rnd)
    tmp = B(Z)
    B(Z) = B(I)
    B(I) = tmp
Next
machs = Left(StrConv(B, vbUnicode), A)
End Function

Der Aufruf geht dann so:
Tabelle1 (2)

 BCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAE
8  Passwort :  9HUKp7qna{L6
9                              
10  Passwort  12                        
11  Länge                          
12                              
13                              
14  Text :   
15                              
16                              
17  Text  12                        
18  Länge                          

Formeln der Tabelle
ZelleFormel
F8=machs(F17)
F10=LÄNGE(F8)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
ransi
Anzeige
noch eine Anmerkung...
18.07.2009 13:53:28
Tino
Hallo,
, Formatiere die Zelle F6 in Text,
sonst kommt es zu einem Fehler wenn im Code als erstes ein = steht.
Gruß Tino
Danke, aber...
19.07.2009 11:34:09
amintire
Hallo, vielen Dank für Eure Bemühungen. Ich habe alle Variationen ausprobiert.
Allerdings könnte es immer mehr als 85 Alphabetischen Zeichen geben.
Der Passwortgenerator generiert nur bis 85 Zeichen. (siehe Arbeitsmappe vom Ransi - ab 85 geht gar nichts mehr)
Bei Tino hängt die Mappe sich auf ab 76 oder so.
Passwort soll auch mehr als 85 Zeichen lang sein.
Es soll gelten: Passwortlänge = Textlänge.
https://www.herber.de/bbs/user/63273.xls
Vielen lieben Dank für Eure Bemühungen.
Gruß amintire
Anzeige
AW: Danke, aber...
19.07.2009 11:41:08
ransi
HAllo
Zitat:
ab 85 geht gar nichts mehr
Das ist doch klar.
Das heist, eine (egal welche) Buchstabe darf nicht mehr als andere (egal welche) Buchstabe vorkommen.
Stell dir vor du wählst PW-Länge 89.
Dann ist die Vorgabe nicht einzuhalten.
Dann wird es immer welche geben die öfters vorkommen als andere.
ransi
Anzeige
AW: da hast du recht...
19.07.2009 11:46:19
amintire
hallo, daran hab ich gar nicht mehr gedacht. ;)
Wollte eigentlich dass sich ein PW durch die Länge des Textes entwickelt. Zufällig und immer anders. A soll nicht immer gleich B sein.
Wenn die Textlänge länger ist können sich die Buchstaben / Zeichen widerholen, aber nicht zu oft. Also nicht gleich 60 mal eine A ;)
Gruß amintire
Anzeige
AW: da hast du recht...
19.07.2009 11:59:38
Tino
Hallo,
wenn mehr Zeichen gefordert als vorhanden und jedes nur einmal vorkommen darf, kann es auch nicht gehen.
Hier eine Alternative:
https://www.herber.de/bbs/user/63275.xls
Gruß Tino
AW: da hast du recht...
19.07.2009 12:07:49
ransi
HAllo
Wobei :
...Zeichen widerholen, aber nicht zu oft... auch recht schwammig ist ..;-)
Versuch mal so:
Option Explicit Public Function machs(A As Integer) As String Const strText As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!§$%&() _ []{}\?*#:;,.-+" Dim B() As Byte Dim I As Integer ReDim tmp(1 To A) As Byte B = StrConv(strText, vbFromUnicode) Randomize For I = 1 To A tmp(I) = B(Int(UBound(B) * Rnd)) Next machs = StrConv(tmp, vbUnicode) End Function ransi
Anzeige
AW: ab 256 kommt xxx
19.07.2009 13:06:43
amintire
Hi Tino, danke für deine Hilfe.
Wie änder ich die Zelle in F8 dass alles angezeigt wird? Also wenn ich 255 länge starte zeigt er mir die buchstaben/zeichen an, bei 256 Zeichen kommt #####
Also beim Ransi funktioniert es, da wird alles angezeigt.
Gruß amintire
AW: ab 256 kommt xxx
19.07.2009 13:15:20
Tino
Hallo,
ist normal, ist Die Zelle in Text Formatiert, werden nur 256 Zeichen angezeigt.
Du kannst Die Zelle auf Standard setzen und beim schreiben noch ein Hochkomma davor setzen.
Beim kopieren musst Du aber daran denken, dass dieses Hochkomma nicht zum Code gehört.
mach im Code aus
Range("F8") = strCode
diese Zeile
Range("F8") = "'" & strCode
Die Zelle F8 auf Standard Formatieren.
Gruß Tino
Anzeige
oder erstes Zeichen niemals =
19.07.2009 13:27:26
Tino
Hallo,
oder wir sorgen dafür, dass als erstes Zeichen niemals = vorkommt, sonst wird es von Excel als Formel interpretiert.
Zelle F8 auf Standard Formatieren!
Sub Kenerriere()
Dim strCode As String
Dim Bereich As Range, RndZahl As Long
Dim AnzahlZeichen As Long

Set Bereich = Range("A1", Cells(Rows.Count, 1).End(xlUp))
AnzahlZeichen = Bereich.Cells.Count
 
 Do
  RndZahl = Int((Bereich(1).Row - Bereich(1).Row + Bereich.Cells.Count + 1) * Rnd + Bereich(1).Row)
   If Not (Len(strCode) = 0 And Bereich(RndZahl) = "=") Then
    If (InStr(strCode, Bereich(RndZahl).Text) = 0) Or Not (AnzahlZeichen > Len(strCode)) Then
     strCode = strCode & Bereich(RndZahl)
    End If
   End If
 Loop While Len(strCode) < Range("F17")

Range("F8") = strCode
End Sub

Gruß Tino
Anzeige
AW: ' voran stellen
19.07.2009 20:01:12
Daniel
Hi
das problem mit dem eventuellen Gleichheitszeichen sollte doch ein vorangestelltes Hochkomma lösen:
Range("F8") = "'" & strCode

Gruß, Daniel
habe ich schon vorgeschlagen.
19.07.2009 20:42:53
Tino
Hallo,
Nachteil ist, dieses Hochkomma wird beim kopieren mitkopiert, wenn man nicht mehr daran denkt.
Gruß Tino
Anzeige
Das kommt darauf an, wie man kopiert
19.07.2009 21:05:45
Daniel
wenn man von Hand die ganze Zelle kopiert (nicht den Text in der Bearbeitungszeile) und dann den Inhalt irgendwo anders einfügt (nicht in eine Excelzelle), dann wird das Hochkomma nicht mitkopiert.
Wenn also das Password auf diesem Weg in eine Internetseite eingetragen wird, sollte es kein Problem geben.
Gruß, Daniel
Anzeige
AW: Das kommt darauf an, wie man kopiert
19.07.2009 21:21:34
Tino
Hallo,
hatte ich vorher getestet die Zelle in eine Textdatei kopiert da war dieses Hochkomma mit dabei.
Darauf hin habe ich den anderen Vorschlag ohne = erstellt. (Vista mit office 2007)
Gruß Tino
AW: Vielen Dank...
19.07.2009 21:39:56
amintire
Für Eure Hilfe. Ich werde das ganze mal ausprobieren und Euch ein Feedback geben.
Danke nochmals.
Gruß amintire
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Passwort Generator für Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:
    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:
Option Explicit

Public Function machs(A As Integer) As String
    Const strText As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!§$%&()[]{}\?*#:;,.-+"
    Dim B() As Byte
    Dim I As Integer
    ReDim tmp(1 To A) As Byte
    B = StrConv(strText, vbFromUnicode)
    Randomize
    For I = 1 To A
        tmp(I) = B(Int(UBound(B) * Rnd))
    Next
    machs = StrConv(tmp, vbUnicode)
End Function
  1. Gehe zurück zu deinem Arbeitsblatt (z.B. Tabelle1) und gib in die Zelle F8 die folgende Formel ein:
=machs(F17)
  1. Gib in die Zelle F17 die gewünschte Passwortlänge ein.

  2. Formatiere die Zelle F8 als Text, um sicherzustellen, dass das Passwort korrekt dargestellt wird.


Häufige Fehler und Lösungen

  • Problem: Das Passwort wird nicht korrekt angezeigt (z.B. #####).

    • Lösung: Formatiere die Zelle F8 auf Standard oder Text. Wenn das Passwort mit = beginnt, füge ein Hochkomma voran: ="' & strCode.
  • Problem: Passwort generiert sich nicht korrekt bei über 85 Zeichen.

    • Lösung: Stelle sicher, dass die Buchstaben nicht mehrmals verwendet werden, wenn die Länge größer ist als die Anzahl der Zeichen im Alphabet.

Alternative Methoden

Wenn du keinen VBA-Code verwenden möchtest, kannst du auch Excel-Formeln verwenden, um Passwörter zu generieren. Eine einfache Formel könnte wie folgt aussehen:

=TEXTJOIN("", TRUE, CHAR(RANDBETWEEN(65, 90)))

Diese Formel erzeugt zufällige Großbuchstaben. Du kannst sie anpassen, um auch Kleinbuchstaben und Sonderzeichen einzuschließen, indem du die ASCII-Werte änderst.


Praktische Beispiele

  1. Passwort mit Sonderzeichen generieren:

    • Verwende den VBA-Code mit dem erweiterten strText-String, der auch Sonderzeichen beinhaltet.
  2. Passwortgenerator für 16 Zeichen:

    • Setze die Zelle F17 auf 16, um ein Passwort mit 16 Zeichen zu generieren.

Tipps für Profis

  • Erstelle eine Benutzeroberfläche: Du kannst ein Formular in Excel erstellen, um die Eingaben für die Passwortlänge und die Zeichen auszuwählen.
  • Variiere die Zeichen: Nutze unterschiedliche Zeichengruppen, um die Sicherheit zu erhöhen: !@#$%^&*().
  • Verwende den Zufallszahlengenerator: Stelle sicher, dass dein Passwortgenerator den Randomize-Befehl verwendet, um echte Zufälligkeit zu gewährleisten.

FAQ: Häufige Fragen

1. Kann ich den Passwortgenerator auch ohne VBA nutzen? Ja, du kannst einfache Excel-Formeln verwenden, um Passwörter zu generieren, allerdings ist der Funktionsumfang begrenzter.

2. Wie kann ich sicherstellen, dass das Passwort sicher ist? Verwende eine Kombination aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen. Ein längeres Passwort erhöht ebenfalls die Sicherheit.

3. Gibt es eine maximale Länge für Passwörter in Excel? Ja, Excel hat eine Zeichenbegrenzung von 32767 Zeichen pro Zelle, aber in der Praxis kann die Darstellung bei mehr als 255 Zeichen problematisch sein. Verwende die oben genannten Tipps, um dies zu umgehen.

4. Wie kann ich sicherstellen, dass keine Zeichen wiederholt werden? Das VBA-Skript kann so angepasst werden, dass es nur einzigartige Zeichen verwendet. Achte darauf, dass die Länge des generierten Passworts nicht größer ist als die Anzahl der verfügbaren Zeichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige