システム利用者が増えてくると、セキュリティ上、IDとPWによる「利用制限」が必要となることがあります。
特定の人のみが利用できるように「認証」フォームを紹介させていただきます。
みなさん、こんにちは。セルネッツ竹本です。
今回は、「ログイン&PW認証フォームの作り方」をテーマで公開済みの、以下のYouTube動画で解説したVBAプログラムソースを公開しています。
↓YouTube動画
【VBA入門】ログイン&PW認証フォームの作り方を公開
◆認証フォームのイメージ
オーソドックスに、要素は2つ。「ログインID」と「PassWord」の2つです。
Excelブック先頭シートに[MENU]という名前で用意し、
【ログイン認証】ボタンをクリックすると認証フォームが立ち上がる仕様としました。
◆VBAソース(ユーザーフォームModule)
3つのプロシージャで(Sub ではじまり、End SUB で終わる)構成しました。
値を入力したら認証ボタンを押下する、そんなシンプルなデザインにしてみました。
'※※※※※※※※※※※※※※※※※※※※※※※※
Sub UserForm_Initialize()
'※※※※※※※※※※※※※※※※※※※※※※※※
txtログインID = "": txtPW = ""
'◆日本語入力モード
txtログインID.IMEMode = fmIMEModeOff: txtPW.IMEMode = fmIMEModeOff
'◆MaxLength(最大文字数)
txtログインID.MaxLength = 5: txtPW.MaxLength = 5
'◆Tab順
txtログインID.TabIndex = 1: txtPW.TabIndex = 2
'◆カーソルSET
Call カーソルSET_txtログインID
End Sub
'※※※※※※※※※※※※※※※※※※※※※※※※
Sub カーソルSET_txtログインID()
'※※※※※※※※※※※※※※※※※※※※※※※※
txtログインID.SelStart = 0: txtログインID.SelLength = Len(txtログインID): txtログインID.SetFocus
End Sub
'※※※※※※※※※※※※※※※※※※※※※※※※
Sub カーソルSET_txtPW()
'※※※※※※※※※※※※※※※※※※※※※※※※
txtPWSelStart = 0: txtPW.SelLength = Len(txtPW): txtPW.SetFocus
End Sub
◆VBAソース(ユーザーフォーム認証Module)
行っていることは実にシンプル。2つのフィールド文字列が一致しているかどうか。
エラーがなければ認証成功で、機能制限は解除されます。
'◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
Private Sub B_認証_Click()
'◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
Application.ScreenUpdating = False
'◆入力チェック1/2
If txtログインID <> O_99.Cells(2, 3) Then
Call カーソルSET_txtログインID
MsgBox "入力値に誤りがあります。" & vbCrLf & _
"確認のうえ、再度、実行してください。", , "ERROR"
Exit Sub
End If
'◆入力チェック2/2
If txtPW <> O_99.Cells(2, 4) Then
Call カーソルSET_txtPW
MsgBox "入力値に誤りがあります。" & vbCrLf & _
"確認のうえ、再度、実行してください。", , "ERROR"
Exit Sub
End If
'↓非表示
UF00.Hide
MsgBox "認証成功しました", , "[認証成功]"
'↓アンロード
Unload UF00
End Sub
◆PW設定シートの管理方法
IDとPasswordどこで管理・設定するか?
よくある設計ですが、今回の動画では、以下の3つを紹介しました。
1.ブック保護で設定シートを隠す
2.VBAで設定シートを隠す
3.[設定ファイル]を別ブック(*.xlsx)として連携する
動画シナリオとしては、「機能ボタン」に対して認証を求める方法を紹介しましたが、
Excelを起動するタイミングで認証を求める方法もあります。
つまり、ID&PWを知らなければ、ツールを起動することさえできない設計です。
このあたりは、運用との相談ですし、役職に応じた権限レベルの設定(管理者/一般)も可能です。
Step数の少ないVBAソースですので、是非、お試しください。
今回のテーマは、「ログイン&PW認証フォームの作り方」について、解説を行いました。
本記事が、Excel実務の効率化において、ご参考お役立てになれば幸いです。