パスワード作成の話。。(続き3)
2012-10-20 22:14 の記事
の続きで、パスワードを作成するマクロの完成形を示します。
マクロは3つです。
マクロ1:パスワードの文字を1文字生成
マクロ2:マクロ1を呼んで、n文字のパスワードを生成
マクロ3:パスワードを再計算
以下に、マクロのコードを示します。
01: Function UFPassword2(mode1 As Integer) As String
02: ' 機能 : パスワードの文字を1文字生成
03: ' 【引数】
04: ' mode1 : 文字の種類
05: ' =0 : 英字(大)'A' - 'Z' 0x41(65) - 0x5A(90)
06: ' =1 : 英字(小)'a' - 'z' 0x61(97) - 0x7A(122)
07: ' =2 : 数字 '1' - '9' 0x31(49) - 0x39(57)
08: Randomize ' 乱数系列を再設定
09: Select Case mode1
10: Case 0
11: UFPassword2 = Chr(Int(Rnd(1#) * 26 + 65))
12: Case 1
13: UFPassword2 = Chr(Int(Rnd(1#) * 26 + 97))
14: Case 2
15: UFPassword2 = Chr(Int(Rnd(1#) * 9 + 49))
16: Case Else
17: UFPassword2 = "*"
18: End Select
19: End Function
01行目:引数として文字の種類(mode1)を指定します。
08行目:乱数系列を再設定します。
09行目:mode1変数で、文字の種類を選択しています。
10-11行目:mode1=0なら、英字(大)(A-Z)を1文字返して、関数を終了します。
12-13行目:mode1=1なら、英字(小)(a-z)を1文字返して、関数を終了します。
14-15行目:mode1=2なら、数字(1-9)を1文字返して、関数を終了します。
16-17行目:mode1=それ以外なら、"*"を返して、関数を終了します。
----------------------------------------------------------------------------
01: Function UFPassword1(mode1 As Integer, NmMoji1 As Integer) As String
02: ' 機能 : パスワードを生成する
03: ' 【引数】
04: ' mode1 : パスワードの種類
05: ' =0 : 1文字目:英字(大)、2-n文字:英字(大)、英字(小)、数字(1-9)
06: ' =1 : 1文字目:数字(1-9)、2-n文字:数字(1-9)
07: ' NmMoji1 : パスワードの文字数
08: ' 【変数】
09: Dim PW1() ' パスワード文字列の配列(1文字ずつ)
10: Dim NmMoji2 As Integer ' PW1配列の添字の上限
11: NmMoji2 = NmMoji1 - 1
12: ReDim Preserve PW1(NmMoji2)
13: Dim i, j As Integer ' 整数
14: Dim TmpStr1 As String ' 文字列
15: Randomize ' 乱数系列を再設定
16: ' 1文字目
17: Select Case mode1
18: Case 0
19: PW1(0) = UFPassword2(0)
20: Case 1
21: PW1(0) = UFPassword2(2)
22: Case Else
23: PW1(0) = "*"
24: End Select
25: ' 2 - n文字目
26: For i = 1 To NmMoji2
27: Select Case mode1
28: Case 0
29: j = Int(Rnd(1#) * 3)
30: PW1(i) = UFPassword2(j)
31: Case 1
32: PW1(i) = UFPassword2(2)
33: Case Else
34: PW1(i) = "*"
35: End Select
36: Next i
37: ' パスワード文字列を連結
38: TmpStr1 = ""
39: For i = 0 To NmMoji2
40: TmpStr1 = TmpStr1 + PW1(i)
41: Next i
42: UFPassword1 = TmpStr1
43: End Function
01行目:引数としてパスワードの種類(mode1)、文字数(NmMoji1)を指定します。
09-14行目:変数定義
12行目:PW1配列をパスワード文字数に合わせてサイズ変更。
15行目:乱数系列を再設定します。
17-24行目:パスワードの1文字目を生成
26-36行目:パスワードの2 - n文字目を生成
38-41行目:パスワード文字列を連結
42行目:連結したパスワード文字列を返して完了
----------------------------------------------------------------------------
1: Sub USReCal1()
2: ' 機能 : パスワードを再計算
3: Application.Calculation = xlManual
4: With Worksheets("data")
5: .Range("Password1").Calculate
6: .Range("Password2").Calculate
7: End With
8: Application.Calculation = xlAutomatic
9: End Sub
3行目:自動再計算の停止
4-7行目:パスワードを再計算
8行目:自動再計算の再開
ワークシートは、こんな感じです。
B15セルには、'=UFPassword1(0, 8)'が入っています。
B16セルには、'=UFPassword1(1, 8)'が入っています。
B17セルには、'=UFPassword1(2, 8)'が入っています。
再計算ボタンには、USReCal1マクロが登録されています。
再計算ボタンをクリックすると、パスワードが変わります。
パスワード3は、パスワードの種類(mode1)が範囲外の'2'なので、"********"となっています。
では。
危険です!
Rolling Stones - Sympathy for the Devil [CoD: Black Ops - Crashsite Mission]
の続きで、パスワードを作成するマクロの完成形を示します。
マクロは3つです。
マクロ1:パスワードの文字を1文字生成
マクロ2:マクロ1を呼んで、n文字のパスワードを生成
マクロ3:パスワードを再計算
以下に、マクロのコードを示します。
01: Function UFPassword2(mode1 As Integer) As String
02: ' 機能 : パスワードの文字を1文字生成
03: ' 【引数】
04: ' mode1 : 文字の種類
05: ' =0 : 英字(大)'A' - 'Z' 0x41(65) - 0x5A(90)
06: ' =1 : 英字(小)'a' - 'z' 0x61(97) - 0x7A(122)
07: ' =2 : 数字 '1' - '9' 0x31(49) - 0x39(57)
08: Randomize ' 乱数系列を再設定
09: Select Case mode1
10: Case 0
11: UFPassword2 = Chr(Int(Rnd(1#) * 26 + 65))
12: Case 1
13: UFPassword2 = Chr(Int(Rnd(1#) * 26 + 97))
14: Case 2
15: UFPassword2 = Chr(Int(Rnd(1#) * 9 + 49))
16: Case Else
17: UFPassword2 = "*"
18: End Select
19: End Function
01行目:引数として文字の種類(mode1)を指定します。
08行目:乱数系列を再設定します。
09行目:mode1変数で、文字の種類を選択しています。
10-11行目:mode1=0なら、英字(大)(A-Z)を1文字返して、関数を終了します。
12-13行目:mode1=1なら、英字(小)(a-z)を1文字返して、関数を終了します。
14-15行目:mode1=2なら、数字(1-9)を1文字返して、関数を終了します。
16-17行目:mode1=それ以外なら、"*"を返して、関数を終了します。
----------------------------------------------------------------------------
01: Function UFPassword1(mode1 As Integer, NmMoji1 As Integer) As String
02: ' 機能 : パスワードを生成する
03: ' 【引数】
04: ' mode1 : パスワードの種類
05: ' =0 : 1文字目:英字(大)、2-n文字:英字(大)、英字(小)、数字(1-9)
06: ' =1 : 1文字目:数字(1-9)、2-n文字:数字(1-9)
07: ' NmMoji1 : パスワードの文字数
08: ' 【変数】
09: Dim PW1() ' パスワード文字列の配列(1文字ずつ)
10: Dim NmMoji2 As Integer ' PW1配列の添字の上限
11: NmMoji2 = NmMoji1 - 1
12: ReDim Preserve PW1(NmMoji2)
13: Dim i, j As Integer ' 整数
14: Dim TmpStr1 As String ' 文字列
15: Randomize ' 乱数系列を再設定
16: ' 1文字目
17: Select Case mode1
18: Case 0
19: PW1(0) = UFPassword2(0)
20: Case 1
21: PW1(0) = UFPassword2(2)
22: Case Else
23: PW1(0) = "*"
24: End Select
25: ' 2 - n文字目
26: For i = 1 To NmMoji2
27: Select Case mode1
28: Case 0
29: j = Int(Rnd(1#) * 3)
30: PW1(i) = UFPassword2(j)
31: Case 1
32: PW1(i) = UFPassword2(2)
33: Case Else
34: PW1(i) = "*"
35: End Select
36: Next i
37: ' パスワード文字列を連結
38: TmpStr1 = ""
39: For i = 0 To NmMoji2
40: TmpStr1 = TmpStr1 + PW1(i)
41: Next i
42: UFPassword1 = TmpStr1
43: End Function
01行目:引数としてパスワードの種類(mode1)、文字数(NmMoji1)を指定します。
09-14行目:変数定義
12行目:PW1配列をパスワード文字数に合わせてサイズ変更。
15行目:乱数系列を再設定します。
17-24行目:パスワードの1文字目を生成
26-36行目:パスワードの2 - n文字目を生成
38-41行目:パスワード文字列を連結
42行目:連結したパスワード文字列を返して完了
----------------------------------------------------------------------------
1: Sub USReCal1()
2: ' 機能 : パスワードを再計算
3: Application.Calculation = xlManual
4: With Worksheets("data")
5: .Range("Password1").Calculate
6: .Range("Password2").Calculate
7: End With
8: Application.Calculation = xlAutomatic
9: End Sub
3行目:自動再計算の停止
4-7行目:パスワードを再計算
8行目:自動再計算の再開
ワークシートは、こんな感じです。
B15セルには、'=UFPassword1(0, 8)'が入っています。
B16セルには、'=UFPassword1(1, 8)'が入っています。
B17セルには、'=UFPassword1(2, 8)'が入っています。
再計算ボタンには、USReCal1マクロが登録されています。
再計算ボタンをクリックすると、パスワードが変わります。
パスワード3は、パスワードの種類(mode1)が範囲外の'2'なので、"********"となっています。
では。
危険です!
Rolling Stones - Sympathy for the Devil [CoD: Black Ops - Crashsite Mission]
nice! ありがとうございます。
(^_0)ノ
by cheese999 (2012-10-22 22:48)