AccessTips

データベースを仕上げる

データベースが出来上がったけれど、データベースウィンドウを見せたくない時には"起動時の設定"をします。テーブル、クエリを触ってほしくないとき、この設定は欠かせません。
ところが起動時の設定で指定してもShiftキーとEnterでDBウィンドウは開いてしまいます。

Shiftキーを無効にするためにはAllowBypassKeyをFalseに設定しますが、Databaseのプロパティなのにプロパティに組み込まれていません。ためしにVBエディタでAllowBypassKeyと入力してヘルプを出してみてください。

ヘルプへ

ところがAllowBypassKeyだけでうまくいかない(ヘルプはもしかして2000用??DAOのプロパティとして作り直すとうまく動作します。(別途UP予定))コードでショートカットキーもメニューバーも使用不可にしたい時は・・・
AllowSpecialKeysでショートカットキーを抑止、StartUpMenuBarでスタートアップメニューバー非表示になるように設定できます。
プロパティはおのおのコードで作成してあげます。

この三つのプロパティを全部Falseにすると確かに起動時にShiftキーを無効にし、起動後もF11でDBウィンドウが表示されることもないのですが、調子に乗りすぎて何度も実行するとメニューバーが二度と出てこなくなります。
(注 変数宣言を複数するときは、全部にきちんと型宣言文字をつけないとこういう目に遭います)

デバッグがかかるようなコードをわざと作っておくとVBエディタが開いて、そこから無理やりフォームにアクセスしてDBウィンドウを表示させることができますが、恐ろしいので絶対に全部Trueにするコードも忘れずに書いておいてください。
個人的にはプロジェクトにロックをかけ、DBWindowのオブジェクトをそれぞれ隠しオブジェクト設定にしておくほうがメンテナンス時、楽だと思います。

'------Databaseウィンドウに何も表示させなくするプロシージャ----
'------(ただし隠しオブジェクトにチェックを入れること)--------
Public Function SetNotVisible()

Dim varSize As Variant

' 現在の設定を調べる。
varSize = Application.GetOption("Show Hidden Objects")

If varSize = True Then 'もし表示されているのなら非表示設定に変更
Application.SetOption "Show Hidden Objects", False
End If

End Function

メニューバーもツールバーも表示されなくなったら・・下記のコードをどこかに仕込んで置いてください。

Dim mb As CommandBar
Set mb = CommandBars.Add("dummy", MenuBar:=True, Temporary:=True)
Application.MenuBar = "dummy"
mb.Visible = True

実行するとなーんにもないグレーのツールバーが出てきます。出てきたらしめたもの。なぜかここだけは右クリックできるのでショートカットメニューからユーザー設定を出し、MOUS上級試験でおなじみのカスタマイズ(この場合は標準化でしょうか)をしましょう。
万が一、ということがあります(ありました・・未だに私のマシンではDB内のショートカットメニューが出ません・・。画面ショットがとれず大変困ってます。自分のせいなんですけど・・・涙;)AccessはExcelのようにxlbファイルをずりずり削除したらOKというわけにはいかないので、危険度の高いプロシージャを作ったら必ず抜け道を作っておきましょう。
なお、これらのコードは「起動時の設定(VBAのヘルプから)、T'sWareさんのサイト、技術評論社の「VBAがわかる500の技」を参考にさせていただきました。

プロパティ設定アレンジコードはもう少しいじり倒してから掲載しなおします。


トップページへ


ブラウザ別、解像度別の感想をぜひ!