Excel VBAでログイン画面を実装する方法を紹介します!

Excel・Excel VBA

みなさん,こんにちは.
シンノユウキ(y_stadio)です.

Excel VBAでは,ユーザーフォームなどを活用することでユーザーが便利に使用できる様々なを処理を行うことができます.今回はIDとパスワードを入力しないとブックが表示されない「ログイン機能」を実装したいと思います.

ではいきましょう!

完成形はこんな感じ!

はじめに完成形をお見せしたいと思います.ログイン機能の実装されたブックを開くと,以下のようにブックは表示されずにユーザーフォームだけが表示されます.

IDとパスワードが一致→ブックが表示される!

そして,予め設定しておいたIDとパスワードが一致した場合,以下のようにブックが表示されるという仕組みになっています.

IDとパスワードが不一致→表示されない!

もしIDとパスワードが一致しない場合,ブックは表示されません.

ユーザーフォームの☓ボタンで閉じようとすると,ブックまで同時に閉じられる仕組みになっています.

コードはこちら!

では早速,コードを紹介します.まずはユーザーフォームから.なお,今回紹介したユーザーフォームは,こちらからDLできますので,ぜひご利用ください.

ユーザーフォームは,login.frmファイルに格納されています.それをインポートすることで,オブジェクト名をつけなおしたりといった作業も不要になりますので,ぜひ活用してください.

ではコードはこちらです.

Option Explicit
Enum eColIndex
    id = 1
    pass = 2
End Enum

Private Sub btnLogin_Click()
    'IDとパスワードの取得
    Dim id As String
    Dim pass As String
    id = txtId.Text
    pass = txtPass.Text
    
    'IDを検索しパスワードと照合
    Dim idRow As Long
    On Error GoTo failed
    idRow = WorksheetFunction.Match(id, wsData.Columns(eColIndex.id), 0)
    If pass = wsData.Cells(idRow, eColIndex.pass) Then
        MsgBox "ログインしました", vbInformation, "成功"
        Application.Visible = True
        Unload Me
    Else
failed:
        MsgBox "ログインに失敗しました", vbCritical, "失敗"
    End If
End Sub


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Dim ret As Variant
        ret = MsgBox("フォームを閉じる場合、このブックも同時に閉じられます。よろしいですか?", vbOKCancel, "確認")
        If ret = vbOK Then
            Application.DisplayAlerts = False
            ThisWorkbook.Close
            Application.DisplayAlerts = True
        ElseIf ret = vbCancel Then
            Cancel = True
        End If
    End If
End Sub

ワークシートにIDとパスワードのリストを入力しています.そのワークシートのオブジェクト名をwsData に変更しています.1列目がID,2列目がパスワードです.

なお,以下のコードをThisWorkbookのonOpenのコードとして貼り付けると,前述のようにブックを開いた際にフォームのみを開くことができます.

Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Application.Visible = False
    loginForm.Show
End Sub

注意点

IDとパスワードの管理が面倒

もし本Excelファイルを複数の人にコピーして配布する場合,新規にIDを追加したりする場合はそれぞれのファイルに追記しなければなりません.ですので,かなり面倒な作業になってしまいます.

第三者に見られる可能性もある!

IDとパスワードが一致しないとブックが開けないため,一見するとIDとパスワードをしらない第三者には覗かれないと思われがちですが,いくつか抜け道があり,完全にロックすることはできません.ですので,ゆるーくログイン機能を実装したい場合はこちらで問題ありませんが,そうでない場合は使用をオススメしません.

まとめ

今回はExcelVBAでログイン機能を実装する方法を紹介しました.使い所は限られそうですが,少し変更して使うともしかしたら良い働きをしてくれるかもしれませんね.

 

タイトルとURLをコピーしました