恐らく、データベースの管理者以外のユーザーにはデータベースウィンドウを
表示できないようにした、ということだと思いますが、だとしたらF11キーなどの
ショートカットキーは、むしろ無効化させておいた方がよいかと思います。
(別のショートカットキーを経由するなどして、データベースウィンドウを表示
させることができてしまうためです)
※データベースウィンドウの表示は、VBAなら「DoCmd.SelectObject」で、
マクロなら「オブジェクトの選択」で、それぞれ対応できます。
(それぞれ、3番目の引数に「True/はい」を指定することで可能)
パスワードの入力要求はInputBoxでも可能ですが、パスワード入力らしく
「***」といった表示にさせたい場合は、フォームで自作することになります。
1)新規フォームをデザインビューで開く(テーブルやクエリは指定しません)
2)テキストボックスを追加し、プロパティシートの『その他』タブで、『名前』に
「パスワード」と指定
3)上記テキストボックスのプロパティシートで、今度は『データ』タブを選択し、
『定型入力』の欄に「パスワード」と入力
(パスワード入力時に「***」と表示させるため)
4)コマンドボタンを2つ追加し、一方の名前を「認証」、もう一方を「取消」と
指定
5)「認証」ボタンのプロパティシートで『イベント』タブを選択し、『クリック時』に
カーソルを移動したときに右端に表示される『...』(ビルダ)ボタンをクリック
6)『ビルダの選択』ダイアログが表示されたら、「コード ビルダ」をダブルクリック
(Accessの設定によっては、直接以下のVBE画面が表示されます)
7)VBE(=Visual Basic Editor)の画面が表示され、「Private Sub ~~」と
いう文字が自動入力されるので、そこを以下のように編集(下記のコピー
&ペーストでOk):
Private Sub 認証_Click()
'エラー発生時には「エラー処理:」の行に飛ばすための宣言
On Error Goto エラー処理
'変数を宣言
Dim strPWD As String, Rslt As Boolean
'正規パスワードを定数として記録
Const strReg As String = "abcDEF"
'入力したパスワードを変数に記録
'(空白(Null)は、空文字("")に変換)
strPWD = Nz(パスワード, "")
'正規パスワードと比較
'(StrComp関数を使用し、大文字・小文字を区別させます)
Rslt = (StrComp(strPWD, strReg, vbBinaryCompare) = 0)
'合致した場合はデータベースウィンドウを表示、しなければ終了
If Rslt Then '合致
'メッセージを表示して、データベースウィンドウを表示
'(「acTable」は『テーブル』タブの指定。フォームなら「acForm」)
MsgBox "正規のパスワードを確認しました。", , "確認"
DoCmd.SelectObject acTable, , True
Else '不一致
'メッセージを表示して、Accessを終了
MsgBox "パスワードの認証に失敗したため、終了します。", , "確認"
DoCmd.Quit acQuitPrompt
End If
終了処理:
'処理を終了(→「エラー処理」部分が無限ループになるのを回避)
Exit Sub
エラー処理:
'エラー発生時はエラー内容をメッセージボックスで表示
MsgBox Err.Number & ":" & Err.Description, , Me.Name & " 認証"
Resume 終了処理
End Sub
8)「取消」ボタンのクリック時には、このフォーム自体を閉じるためのコードを
指定(VBAなら「DoCmd.Close」、マクロなら「閉じる」アクション)
9)フォームのプロパティシートで、『書式』タブの各項目を以下のように設定:
『レコードセレクタ』=「いいえ」
『移動ボタン』=「いいえ」
『サイズ自動修正』=「はい」(既定で「はい」のはず)
『自動中央寄せ』=「はい」
『境界線スタイル』=「ダイアログ」
10)今度は『その他』タブに移動し、以下のように設定します:
『ポップアップ』=「はい」
『作業ウィンドウ固定』=「はい」
※ここの設定は、フォームを開くときにダイアログモードを指定する場合は
省略できます。
(VBAなら「DoCmd.OpenForm "フォーム名", , , , , acDialog」、マクロなら
『フォームを開く』アクションで『ウィンドウ モード』に「ダイアログ」を指定)
11)このフォームに適当な名前をつけて保存して閉じる
以上で作成したパスワード確認用のフォームを、現在、F11のキー送信を
行っているボタンから呼び出すようにしてやれば、目的を達せられるかと
思います。
・・・以上、長くなりましたが(汗)、参考まで。
お礼
完璧です・・・。 本当にありがとうございました。 またよろしくお願いいたします!