Accessでパスワードを伏字にする方法と安全な入力欄の作り方

概要

この記事の結論
Accessのフォームでパスワードを伏字にするには、テキストボックスの[定型入力]に「Password」を設定します。入力した文字はアスタリスクで表示されますが、値自体を暗号化する機能ではありません。入力だけに使う欄は非連結にし、表示切替や閉じる際の後始末も含めて設定すると、意図しない保存や画面への露出を減らせます。
パスワードのマスクとは、入力値を変えずに画面上の文字を伏字で表示することです。

この記事でわかること

  • 定型入力はPasswordを指定
  • 入力値そのものは変化しない
  • 一時入力は非連結を使う
  • 表示切替後は伏字へ戻す

この記事の主な内容

  1. 伏字表示とデータ保護の役割を分ける
  2. 非連結のパスワード入力欄を準備する
  3. 定型入力をPasswordに設定する
  4. 表示と非表示をVBAで切り替える
  5. 伏字にならないときの原因を調べる
  6. 入力値を残さず安全に運用する
  7. 公開前に入力欄の動作を確認する
  8. よくある質問

想定読了時間:約12分~16分


伏字表示とデータ保護の役割を分ける

パスワード欄の伏字は、隣の人や画面共有の相手に入力内容が見える機会を減らすための表示設定です。Accessではテキストボックスの定型入力をPasswordにすると、入力文字がアスタリスク(*)に置き換わって見えます。入力した値そのものは別の文字へ変換されません。[S1]

例えば、練習用の「Demo_123」を入力すると、画面には伏字が表示されます。しかし、VBAからその欄のValueを参照すると扱うのは元の入力値です。データベースへの保存や認証の安全性まで、この設定だけで確保できるわけではありません。

対策主な目的この設定だけではできないこと
定型入力のPassword入力欄の文字を画面で隠す保存値の暗号化や利用権限の管理
ACCDBの暗号化とパスワードデータベースファイルを保護する利用者ごとの細かな業務権限の設計
認証と権限の設計誰がどのデータを利用できるか制御する画面を見せた場合ののぞき見防止

ACCDBを開くためのパスワードを設定したい場合は、フォームの定型入力ではなくデータベースの暗号化機能が対象です。Microsoftの案内でも、ACCDBの暗号化と旧形式のユーザーレベルセキュリティは区別されています。[S3]

マスクと暗号化の役割について、画面の伏字、保存データの暗号化、利用者の権限を示した図

本記事で作るもの

ここで作成するのは、入力文字を一時的に受け取る非連結の入力欄です。ユーザー登録やパスワード照合、ログイン後の権限制御までは実装しません。伏字の作り方を理解しただけで、業務用の認証画面が完成したとは判断しないでください。


非連結のパスワード入力欄を準備する

試すときは業務用ファイルのコピー、または新しいACCDBを使います。空のフォームを作り、テキストボックスを1つ配置してください。入力値を保存しない用途では、コントロールソースを空欄にした非連結のテキストボックスを使用します。[S2]

1. [作成]から[フォームデザイン]を開きます。

2. [テキストボックス]を配置し、入力欄を選択します。

3. F4キーでプロパティシートを表示します。

4. [名前]をtxtPassword、[コントロールソース]を空欄にします。

5. 付属ラベルの[標題]を「パスワード」にし、F_入力テストという名前でフォームを保存します。

対象プロパティ設定例
入力欄名前txtPassword
入力欄コントロールソース空欄
入力欄定型入力Password
付属ラベル標題パスワード

[名前]はVBAから入力欄を指定するための識別名、[コントロールソース]は保存先のフィールドや表示式です。ラベルに「パスワード」と書いても入力文字は隠れません。どの部品を選択しているか、プロパティシート上部で確認しましょう。

入力欄の3つの設定について、名前:txtPassword、保存先:空欄、定型入力:Passwordを示した図

既存フォームへ追加する場合

既存の入力欄がテーブルのフィールドに連結されていると、レコード保存時に入力値が保存されます。見た目を伏字にしても、この連結は解除されません。ログイン時だけ使うつもりの値が業務テーブルへ入らないよう、先に保存先を確認してください。

また、非連結でも既存VBAが入力値を別のテーブルやファイルへ書き出している場合があります。コントロールソースが空欄であることと、アプリ全体が値を記録しないことは別の確認です。


定型入力をPasswordに設定する

最短の設定方法は、入力欄を選び、[データ]タブの[定型入力]へPasswordを直接入力する方法です。日本語で「パスワード」と入力するのではなく、半角英字のPasswordを指定します。ウィザードからパスワード形式を選ぶ方法もあります。[S1]

手順操作確認すること
1フォームをデザインビューで開く編集対象が正しい
2txtPasswordをクリックするラベルではなく入力欄を選択
3[データ]の[定型入力]にPassword前後に不要な文字を入れない
4保存してフォームビューへ切り替えるダミーの文字列が伏字になる

定型入力ウィザードを使う場合は、同じ設定欄の右端にあるボタンから開きます。ウィザードが利用できない環境でも、まずプロパティへの直接指定で確認できます。メニュー名やタブの位置はAccessの版によって多少異なります。

伏字にする4ステップについて、デザインビュー、入力欄を選択、Passwordを設定、フォームで確認を示した図

フォームビューで結果を確かめる

デザインビューでは、部品名やフィールド名が表示されるため、入力時の見え方とは異なります。フォームビューへ切り替えてからDemo_123などのダミー文字を入力してください。実際の業務パスワードをテスト用ファイルへ入力する必要はありません。

伏字は入力文字数を推測できる場合があります。また、コピーやVBAなど別の経路で値が使われる可能性は残ります。画面上で隠れたことを確認したら、保存先やログなどの扱いも別に点検しましょう。


表示と非表示をVBAで切り替える

入力内容を短時間だけ確認できるようにするには、非連結のチェックボックスを使います。チェックボックスの名前をchkShowPassword、標題を「入力内容を表示」、既定値をFalse、トリプルステートを[いいえ]にします。

チェックボックスの[更新後処理]を[イベントプロシージャ]にして、フォームモジュールに次のコードを配置します。フォームの[読み込み時]にもイベントを設定してください。同じイベントがすでにある場合は、プロシージャを重複作成せず、既存の処理へ統合します。

Private Sub Form_Load()
    Me!chkShowPassword = False
    Me!txtPassword.InputMask = “Password”
    Me!txtPassword = Null
End Sub

Private Sub chkShowPassword_AfterUpdate()
    If Nz(Me!chkShowPassword.Value, False) Then
        Me!txtPassword.InputMask = “”
    Else
        Me!txtPassword.InputMask = “Password”
    End If End Sub

チェック時は定型入力を空文字列にし、解除時はPasswordへ戻します。非連結のtxtPasswordを前提とした例です。フォームを開くたびに入力値を消すため、保存データへ連結した入力欄にはそのまま転用しないでください。

表示切替の基本動作について、初期は伏字、確認中だけ表示、終了時に伏字へを示した図

処理後にも元の状態へ戻す

実際のアプリへ組み込む場合は、認証が成功したときだけでなく、取消やエラー時にも入力値のクリアと再マスクを行います。フォームを非表示にして再利用する場合、再表示時にForm_Loadが動くとは限りません。表示し直す処理にも初期化を組み込む必要があります。

InputMaskを戻すだけでは、入力値は消えません。画面を伏字へ戻す処理と、txtPasswordへNullを代入する処理を分けて考えると、後始末の漏れを防げます。

パスワードの伏字設定の影響範囲が分からない場合

設定だけで解決できない場合や、既存のフォーム・クエリ・外部連携への影響を判断できない場合は、Accessの教科書へご相談ください。対象の画面、起きている症状、変更したい内容を整理すると、調査や改修の範囲を検討しやすくなります。


伏字にならないときの原因を調べる

設定が効かない場合は、別の部品を選択していないか、表示中のフォームと編集したフォームが同じかを確認します。特にサブフォームでは、外側の枠と内側のテキストボックスが別の対象になるため、名前を見ながら選び直してください。

症状主な確認先対処
Passwordの設定欄が見つからない選択中の部品テキストボックスを選択してF4
設定しても通常表示になるInputMaskを操作するイベントForm_Loadや更新後処理などを調べる
データシート側では文字が見える表示しているオブジェクトフォームの設定が他の表示へ及ぶと考えない
文字が入力できない編集ロック・使用可能・連結先入力可否の設定をマスクと分けて確認
フォームを再表示すると値が残る非表示から戻す処理再表示前にクリアと再マスクを実行

VBAで確認するときも、Debug.Printやメッセージボックスへ本物のパスワードを出力しないようにします。ダミー入力で欄の名前、InputMaskの設定、入力の有無を確認すれば、表示設定の切り分けには十分です。

伏字にならない原因について、選択対象、定型入力、イベントの上書き、表示先を示した図

入力値を残さず安全に運用する

一時入力の欄では、不要になった値をフォームに残さない方針を決めます。ログへ残すのは処理結果や発生時刻など必要な情報に限定し、入力された秘密情報そのものを記録しない設計にしてください。障害調査用の画面画像にも注意が必要です。

認証情報の保存が必要なシステムでは、平文の一覧表と文字列比較だけで運用を済ませないようにします。組織の認証基盤や保存方式、権限の管理を含めた設計が必要です。フォームのマスク、ACCDBの暗号化、利用者の認証はそれぞれ役割が違います。

コピーや帳票からの露出も確認する

入力欄を伏字にした後は、同じデータを表示する別フォーム、クエリ、レポート、CSV出力の有無を確認します。フォームだけ隠れていても、別経路で平文が表示されれば目的を満たせません。画面共有を行う業務では表示切替を使うタイミングも決めておきましょう。

入力値を残さない運用について、非連結で入力、処理後にクリア、ログへ記録しないを示した図

公開前に入力欄の動作を確認する

見た目だけでなく、初期状態、操作後、再表示後を確認します。以下はテスト観点であり、本記事のコードをAccess実機で実行済みという意味ではありません。業務へ組み込む前に、使用するAccess環境のコピーで確認してください。

操作期待する結果
フォームを開く入力欄は空で表示チェックはオフ
ダミー文字を入力画面では伏字になる
表示チェックをオン・オフ元の文字と伏字が切り替わる
空欄で処理する業務要件に応じた入力確認になる
取消・エラー・処理終了入力値を消し伏字へ戻す
閉じて再度開く/非表示から戻す前の入力値が露出しない
テーブル・ログ・帳票を見る不要な入力値が記録されていない
入力欄の確認リストについて、初期表示、表示切替、空欄入力、閉じて再表示を示した図

伏字設定そのものはPasswordの指定で完了します。運用時は、非連結の確認、表示切替の初期化、処理後のクリアまでを一組として点検すると、使いやすさと情報の扱いをそろえられます。


よくある質問

暗号化されません。定型入力のPasswordは入力欄の表示を変える設定であり、VBAなどが扱う値は元の文字列です。テーブルに連結されていれば、入力値が保存されることもあります。一時入力だけなら非連結にし、保存処理やログ出力も確認してください。ファイル自体を保護したい場合はACCDBの暗号化、利用者ごとの操作を制限したい場合は認証と権限の設計を別に検討します。伏字になったことだけで保護完了とは判断できません。

テキストボックスのプロパティシートで、定型入力へ半角英字のPasswordを直接指定できます。まずフォームをデザインビューで開き、ラベルではなく入力欄を選んでください。設定後は保存してフォームビューに切り替え、ダミーの文字列が伏字になるか確認します。設定欄が見当たらない場合は選択対象を見直します。Accessの版や画面構成で表示が異なることはありますが、ウィザードの有無だけで伏字機能が使えないとは限りません。

標準のVBAのInputBoxには、AccessのテキストボックスのようにInputMaskを設定する引数はありません。秘密情報を受け取る画面が必要なら、非連結のテキストボックスを持つ専用フォームを用意すると表示方法を管理できます。その際はPasswordの指定だけでなく、取消、空欄、処理後の消去、再表示時の初期化も設計してください。入力ダイアログを作ることと、安全な認証処理を実装することは別の作業として扱います。

マスクの再設定と入力値の消去が別の処理だからです。InputMaskをPasswordへ戻すと画面は伏字になりますが、テキストボックスが保持する値はそのままです。非連結の欄で処理を終えた後は、必要に応じてNullを代入して消します。また、フォームを閉じず非表示にしている場合は、再表示時に読み込みイベントが動かないことがあります。再表示する処理でもチェック状態、定型入力、入力値を初期化してください。

すべての画面や出力で隠れるとは考えないでください。既存フォームの入力欄は個別の設定を持ち、別のクエリ、帳票、VBA、CSV出力などが値を扱う場合もあります。実際に利用者が見るフォームのテキストボックスを選んで定型入力を確認し、他の表示経路も点検することが大切です。特に一時入力が目的なら、テーブルへ保存する必要があるかを先に見直します。マスクの設定場所を増やすだけでは情報保護の代わりになりません。

実行用フォームに設定した伏字表示は、Runtimeで運用するアプリでも利用する構成にできます。ただし、設計変更は製品版Access側で行い、配布先と同じRuntime環境で表示切替や取消まで確認してください。VBAを使う場合は既存のイベント処理や信頼設定にも影響されます。配布時には開発用の原本を残し、利用者が設定画面を開かなくても入力、確認、終了できる画面にしておくと、運用時の手戻りを減らせます。

関連記事

フォームの作成方法

テキストボックスと連結の違い

リストボックスの表示と保存値

参考情報

[S1] Microsoft InputMaskの仕様
https://learn.microsoft.com/en-us/office/vba/api/access.textbox.inputmask

[S2] Microsoft ControlSourceの仕様
https://learn.microsoft.com/en-us/office/vba/api/access.textbox.controlsource

[S3] Microsoft ACCDBの暗号化
https://support.microsoft.com/en-us/access/encrypt-a-database-by-using-a-database-password

[S4] Microsoft InputBoxの仕様
https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/inputbox-function

TOP