みなさん、こんにちは。今日は、Access VBAを使っているときに、パスワードを入力させる際のちょっとした工夫についてお話しします。普段、InputBoxを使ってユーザーに情報を入力してもらうことがありますよね。でも、パスワードのような機密情報を入力してもらうとき、そのまま文字が表示されるのは少し心配です。そこで、入力中の文字を「*」などで隠す方法をご紹介します。
標準のInputBoxでは文字をマスクできない
まず、基本的なInputBoxの使い方をおさらいしましょう。例えば、ユーザーに名前を入力してもらう場合、以下のように書きます。
vba
Dim userName As String
userName = InputBox("名前を入力してください", "ユーザー名入力")
しかし、この方法でパスワードを入力してもらうと、入力中の文字がそのまま表示されてしまいます。これは少し困りますね。実は、標準のInputBoxには入力文字をマスクする機能がないんです。
ユーザーフォームを使ってパスワード入力をマスクする
では、どうすれば良いのでしょうか?答えは、ユーザーフォームを使うことです。ユーザーフォームのテキストボックスには、入力された文字を特定の文字(例えば「*」)で表示するプロパティがあります。具体的な手順は以下の通りです。
- VBAエディタで新しいユーザーフォームを作成します。
- フォームにテキストボックスと「OK」ボタン、「キャンセル」ボタンを配置します。
- テキストボックスのプロパティで、PasswordCharに「*」を設定します。これで、入力された文字が「*」で表示されるようになります。
- 「OK」ボタンと「キャンセル」ボタンに、それぞれのクリック時の処理を記述します。
この方法を使えば、ユーザーがパスワードを入力する際に、入力内容が見えなくなります。
具体的な実装例
では、具体的なコード例を見てみましょう。以下は、ユーザーフォームを使ってパスワードを入力し、その結果を取得する方法です。
1. ユーザーフォームの作成新しいユーザーフォームを作成し、名前を`frmPasswordInput`とします。
2. コントロールの配置
– テキストボックス名前を`txtPassword`とし、`PasswordChar`プロパティに「*」を設定します。
– OKボタン名前を`btnOK`とします。
– キャンセルボタン名前を`btnCancel`とします。
3. コードの記述
– OKボタンのクリックイベント
vba
Private Sub btnOK_Click()
Me.Hide
End Sub
– キャンセルボタンのクリックイベント
vba
Private Sub btnCancel_Click()
Me.txtPassword = ""
Me.Hide
End Sub
4. パスワード入力を呼び出す関数
vba
Function GetPassword() As String
Dim frm As New frmPasswordInput
frm.Show
Do While frm.Visible
DoEvents
Loop
GetPassword = frm.txtPassword
Set frm = Nothing
End Function
このようにして、`GetPassword`関数を呼び出すと、ユーザーフォームが表示され、ユーザーがパスワードを入力できます。入力されたパスワードは「*」で表示され、セキュリティが向上します。
よくある質問や疑問
Q1: 標準のInputBoxでどうしてもパスワード入力をマスクしたい場合、他に方法はありますか?
残念ながら、標準のInputBoxでは入力文字をマスクする機能がありません。そのため、ユーザーフォームを使用する方法が一般的です。
Q2: ユーザーフォームを使わずに、APIを利用してInputBoxの入力をマスクする方法はありますか?
一部の高度な方法として、Windows APIを利用してInputBoxの入力をマスクする方法も存在しますが、実装が複雑であり、推奨されません。
まとめ
いかがでしたでしょうか。Access VBAでパスワード入力を安全に行うためには、標準のInputBoxではなく、ユーザーフォームを活用するのが効果的です。これにより、ユーザーの入力内容をマスクし、セキュリティを高めることができます。



コメント