none
Criar senhas aleatórias com alfanumericos RRS feed

  • Pergunta

  • Galera tenho uma macro em VBA mas que gera senhas aleatórias com caracteres, acentuação... e gostaria de mudá-la para gerar alfanumericos, sem acentuação..alguém pode me auxiliar?

    Sub Produzir_senha()
    Dim i, y, SNA, SNC
    Dim SN As String
    Randomize
    For i = 2 To ActiveSheet.Range("D2")
        For y = 1 To ActiveSheet.Range("C2")
            SNC = Int((Rnd * 50) + 72)
            SNA = ChrW(SNC)
            SN = SN & SNA
            Cells(i, 1).Value = SN
        Next y
        SN = ""
    Next i
    Range("A1").Value = "Senhas Criadas"
    End Sub

    Sub Senhas_deletar()
    Range("A2:A51").ClearContents
    Range("A1").Value = "Senhas Deletadas"
    End Sub


    Sub ver_macros()
    Saber1.Shapes("sb").Visible = True
    End Sub

    Sub oc_macros()
    Saber1.Shapes("sb").Visible = False
    End Sub

    Sub visualizar_macros_vbe()
    Dim resposta As String
    resposta = MsgBox("Deseja visualizar macros no módulo VBE?", vbYesNo + vbInformation, "Saberexcel - site das macros")
    If resposta = vbYes Then
       Application.Goto reference:="Produzir_senha"
    End If
    End Sub


    Obrigada, Eliana Gomes

    terça-feira, 29 de novembro de 2016 19:56

Respostas

  • Maiusculo e minisculo?

    Sua "senha" é gerada por essa expressao:

      SNC = Int((Rnd * 50) + 72)

    Isso indica que um numero é gerando entre 0 e 49 e voce adiciona 72. Se voce converter em ASCII voce obtem o codigo 72 à 121 em Unicode

    Para gerar senhas usando os caracteres:

    0 1 2 3 4 5 6 7 8 9 
    A B C D E F G H I J K L M N O P Q R S T U V W X Y 
    a b c d e f g h i j k l m n o p q r s t u v w x y z 


    Voce vai ter que fazer isso:

    Sub Produzir_senha()
    Dim i, y, SNA, SNC
    Dim SN As String
    Dim iTemp As Integer, bOK As Boolean, strTemp As String 
    Randomize
    For i = 2 To ActiveSheet.Range("D2")
    
    	For y = 1 To ActiveSheet.Range("C2") 
            Do 
                iTemp = Int((122 - 48 + 1) * Rnd + 48) '48-57 = 0 To 9, 65-90 = A To Z, 97-122 = a To z 
                Select Case iTemp 
                Case 48 To 57, 65 To 90, 97 To 122: bOK = True 
                Case Else: bOK = False 
                End Select 
            Loop Until bOK = True 
            bOK = False 
            strTemp = strTemp & Chr(iTemp) 
        Next y 
        Cells(i, 1).Value = strTemp
        strTemp = ""
    Next i
    Range("A1").Value = "Senhas Criadas"
    End Sub
    
    Sub Senhas_deletar()
    Range("A2:A51").ClearContents
    Range("A1").Value = "Senhas Deletadas"
    End Sub
    
    
    Sub ver_macros()
    Saber1.Shapes("sb").Visible = True
    End Sub
    
    Sub oc_macros()
    Saber1.Shapes("sb").Visible = False
    End Sub
    
    Sub visualizar_macros_vbe()
    Dim resposta As String
    resposta = MsgBox("Deseja visualizar macros no módulo VBE?", vbYesNo + vbInformation, "Saberexcel - site das macros")
    If resposta = vbYes Then
       Application.Goto reference:="Produzir_senha"
    End If
    End Sub

    Testei aqui e o resultado usando C2=15 e D2=20 foi:

    Senhas Criadas
    jJRKpscrCVMhrFH
    K0AOeel9dPKuuaw
    UnKjLEtdDx5totU
    0TdmRzcyqwO5OWm
    J6ugxCPy7eNKGl3
    kaVnfJPgqB0VIkm
    29vuwt4tpWauxb9
    Szhcb2u2Cl42462
    MUr2DQQKUL3mMSB
    VobF38b4LL3mrVF
    LRLtfg33QTBEQrb
    bxrblNE0DyTL5tY
    IG7UEP9W3gMSZbs
    T9RLm42i641tKW7
    4pajZCQfGSePo6L
    bfLcq9Ev3Du8XwY
    OHlWQd5FSX6s28k
    bERPwCBRPifsSo7
    VmMCt9PMl9N6uOn


    att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------




    terça-feira, 29 de novembro de 2016 20:32

Todas as Respostas

  • Maiusculo e minisculo?

    Sua "senha" é gerada por essa expressao:

      SNC = Int((Rnd * 50) + 72)

    Isso indica que um numero é gerando entre 0 e 49 e voce adiciona 72. Se voce converter em ASCII voce obtem o codigo 72 à 121 em Unicode

    Para gerar senhas usando os caracteres:

    0 1 2 3 4 5 6 7 8 9 
    A B C D E F G H I J K L M N O P Q R S T U V W X Y 
    a b c d e f g h i j k l m n o p q r s t u v w x y z 


    Voce vai ter que fazer isso:

    Sub Produzir_senha()
    Dim i, y, SNA, SNC
    Dim SN As String
    Dim iTemp As Integer, bOK As Boolean, strTemp As String 
    Randomize
    For i = 2 To ActiveSheet.Range("D2")
    
    	For y = 1 To ActiveSheet.Range("C2") 
            Do 
                iTemp = Int((122 - 48 + 1) * Rnd + 48) '48-57 = 0 To 9, 65-90 = A To Z, 97-122 = a To z 
                Select Case iTemp 
                Case 48 To 57, 65 To 90, 97 To 122: bOK = True 
                Case Else: bOK = False 
                End Select 
            Loop Until bOK = True 
            bOK = False 
            strTemp = strTemp & Chr(iTemp) 
        Next y 
        Cells(i, 1).Value = strTemp
        strTemp = ""
    Next i
    Range("A1").Value = "Senhas Criadas"
    End Sub
    
    Sub Senhas_deletar()
    Range("A2:A51").ClearContents
    Range("A1").Value = "Senhas Deletadas"
    End Sub
    
    
    Sub ver_macros()
    Saber1.Shapes("sb").Visible = True
    End Sub
    
    Sub oc_macros()
    Saber1.Shapes("sb").Visible = False
    End Sub
    
    Sub visualizar_macros_vbe()
    Dim resposta As String
    resposta = MsgBox("Deseja visualizar macros no módulo VBE?", vbYesNo + vbInformation, "Saberexcel - site das macros")
    If resposta = vbYes Then
       Application.Goto reference:="Produzir_senha"
    End If
    End Sub

    Testei aqui e o resultado usando C2=15 e D2=20 foi:

    Senhas Criadas
    jJRKpscrCVMhrFH
    K0AOeel9dPKuuaw
    UnKjLEtdDx5totU
    0TdmRzcyqwO5OWm
    J6ugxCPy7eNKGl3
    kaVnfJPgqB0VIkm
    29vuwt4tpWauxb9
    Szhcb2u2Cl42462
    MUr2DQQKUL3mMSB
    VobF38b4LL3mrVF
    LRLtfg33QTBEQrb
    bxrblNE0DyTL5tY
    IG7UEP9W3gMSZbs
    T9RLm42i641tKW7
    4pajZCQfGSePo6L
    bfLcq9Ev3Du8XwY
    OHlWQd5FSX6s28k
    bERPwCBRPifsSo7
    VmMCt9PMl9N6uOn


    att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------




    terça-feira, 29 de novembro de 2016 20:32
  • Muito grata William 

    Obrigada, Eliana Gomes

    quarta-feira, 30 de novembro de 2016 12:58
  • Poderia por favor encerrar essa questao, a marcando como correta?

    Isso ajuda a organizar o forum.

    Obrigado.


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    segunda-feira, 27 de fevereiro de 2017 14:47