Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1088to1092
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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
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
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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge