VB(A)

비밀번호 생성

당근쨈 2015. 10. 31. 08:06

영문, 숫자, 특수문자의 숫자를 지정하고

그만큼 문자를 생성하는 매크로

해외에서 짜깁기.


Function RandomPass(lowerCase As Integer, NumericChr As Integer, SpecialChr As Integer) As String
 
    Dim i As Byte
    Dim v As Variant
    Dim NonAlpha As Variant
    
'   Set Non-alpha characters to choose from
    NonAlpha = Array("~""@""#""$""%""^""&""*""("")""+""?")
    For i = 1 To SpecialChr
        RandomPass = RandomPass & NonAlpha(Int((UBound(NonAlpha) - LBound(NonAlpha) + 1* Rnd + LBound(NonAlpha)))
    Next i
    
'   Set Numeric character
    ReDim v(48 To 57)
    For i = 1 To NumericChr
        RandomPass = RandomPass & Chr(Int((UBound(v) - LBound(v) + 1* Rnd + LBound(v)))
    Next i
    
'   Set lower case character
    ReDim v(97 To 122)
    For i = 1 To lowerCase
        RandomPass = RandomPass & Chr(Int((UBound(v) - LBound(v) + 1* Rnd + LBound(v)))
    Next i
    
    RandomPass = ScrambleWord(RandomPass)
    
End Function
 
 
Function ScrambleWord(ByRef orderedWord As StringAs String
 
    Dim temp As String
    Dim i As Long, RandChr As Long
    
    For i = 1 To Len(orderedWord)
    
        RandChr = Int(Rnd() * Len(orderedWord)) + 1
        temp = Mid(orderedWord, i, 1)
        Mid(orderedWord, i, 1= Mid(orderedWord, RandChr, 1)
        Mid(orderedWord, RandChr, 1= temp
        
    Next i
    
    ScrambleWord = orderedWord
End Function
cs





'VB(A)' 카테고리의 다른 글

정규식을 이용한 텍스트 변경  (2) 2015.11.08
경우의 수  (0) 2015.11.06
두가지 조건을 만족하는 값 나열  (0) 2015.10.16
체크박스로 시트 보호 해제 및 셀 잠금 해제  (0) 2015.10.14
숫자 섞기  (0) 2015.10.02