• ベストアンサー

Accessでのパスワード設定について

ご教示のほどお願いします。 Accessで文書を管理するアプリケーションを作っておりますが、起動時の設定でデータベースウィンドウを非表示にしております。 管理フォームをつくり、データベースウィンドウを表示させるボタンを設置して、「F11」キー送信によってデータベースウィンドウを表示させるようにしておりますが、データベースウィンドウを表示させる際に、パスワード入力するように設定し、OKならデータベースウィンドウを開き、パスワードが間違っていたら、アプリケーションを終了させるようにしたいのですが、どのようにしたら良いかわかりません。 できれば具体的なやり方、コードなども教えていただけたら幸いです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

恐らく、データベースの管理者以外のユーザーにはデータベースウィンドウを 表示できないようにした、ということだと思いますが、だとしたら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のキー送信を 行っているボタンから呼び出すようにしてやれば、目的を達せられるかと 思います。 ・・・以上、長くなりましたが(汗)、参考まで。

hwoman
質問者

お礼

完璧です・・・。 本当にありがとうございました。 またよろしくお願いいたします!

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

まず、ファイルを『排他モード』で開きます。 【排他モードの開き方】 スタートメニューの『Access』を開き ファイルを選択して、右下の『開く』から『排他モードで開く』を選択。 そして、『ツール』⇒『セキュリティ』⇒『データベース パスワードの設定』 パスワードを設定後、ファイルを再起動すればOKですが 質問の答えになっていますでしょうか?

hwoman
質問者

補足

早速ありがとうございます。 質問の趣旨ですが、要するに、設置したボタンを押すと・・・パスワードを求めるウィンドウが開いて、パスワードを入れるとそのパスワードが合っていればデータベースウィンドウが表示されて、間違っていたらアプリケーションを終了するようにできればOKです。 教えていただいた方法では、データベースを開くことにパスワードを要求するということではないでしょうか?

すると、全ての回答が全文表示されます。
  • ipsum11
  • ベストアンサー率21% (55/251)
回答No.1

標準のインプットボックスか、パスワード入力画面を新たに用意して、 パスワードの認証ロジックを作成すればよいでしょう。

すると、全ての回答が全文表示されます。

関連するQ&A