2014年11月3日月曜日

[MSAccess] Access2007の終了 ボタンを無効にする

Microsoft Access 2007 の「Accessの終了」「データベースを閉じる」ボタンを無効にする方法です。これはMSAccess 2007 に限ります、2010 以降になると「Office ボタン」が無くなっており、別の方法になります。

■ 手順1

システム テーブルを表示する設定

Access の Office ボタン > Access のオプション > メニューの「カレント データベース」 > ナビゲーションの「ナビゲーション オプション」ボタン と辿る

「ナビゲーション オプション」ウィンドウの 表示オプション 内にある、「システム オブジェクトの表示」を有効にする。

■ 手順2

システム テーブルを作成する。上記の「システム オブジェクトの表示」が有効になっていないと作成しても表示されません。(USys と名前を付けただけで、システム オブジェクトの扱いになってしまう)

・テーブル名:USysRibbons
・カラム
フィールド名データ型
IDオートナンバー
RibbonNameテキスト型(サイズ 255)
RibbonXmlメモ型

■ 手順3

「Accessの終了」「データベースを閉じる」ボタンを無効にするリボン (XML) 項目を定義します。
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <commands>
    <command idMso="FileExit" enabled="false" />
  </commands>
  <ribbon>
    <officeMenu>
      <control idMso="FileCloseDatabase" enabled="false" />
    </officeMenu>
  </ribbon>
</customUI>

このXMLテキストを上記で作成した USysRibbons テーブルの RibbonXml カラムにレコードとして挿入します。RibbonName には任意の名前を付けます。

■ 手順4

作成したリボンのカスタマイズ設定を有効にする。

Access の Office ボタン > Access のオプション > メニューの「カレント データベース」 と辿り、
リボンとツールバーのオプションの「リボン名」で、上記で準備した USysRibbons テーブルの RibbonName カラムの名前を選択します。一旦データベースを閉じて開き直さないと、登録した名前が選択できないかもしれません。

これでデータベースを閉じて、開き直すとリボンのカスタマイズ設定が有効になります。

■ 補足

もちろんこの設定を加えると終了操作に制限がかかりますが、こういう対策で操作を制限しないと正しく機能しないのであれば、最初から C#.NET 等のWindowsソフトウェアとして提供するべきでは?
どうせ Microsoft Access で本格的に操作を制限しても抜け穴だらけです。無意識に操作してしまいがちなものだけを制限する程度の効果しかありません。

これで残っている「閉じる」操作は、
  • Windows のタスクバーから、Accessのタスクを閉じる。
  • 閉じる[×]ボタン で閉じる。
  • ショートカットキー [Ctrl] + [F4] で閉じる。
  • Shift キーを押しながら起動すると、リボンのカスタママイズを無効にして起動できる。
  • タスクマネージャ から、プロセスをKILL

■ 参考資料

リボンをカスタマイズする (Office Access 2007)
http://office.microsoft.com/ja-jp/access-help/HA010211415.aspx