2014年11月6日木曜日

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

Microsoft Access 2010 のファイルメニューにある「データベースを閉じる」「終了」ボタンを無効にする方法です。Access 2013 では、「閉じる」ボタンと名称が少し違います。これはMS Access 2010 以降に限ります、2007 だと ファイルメニューの「Microsoft Office Backstage ビュー」が無く、別の実装が必要です。2007 における設定はこちら

■ 手順1

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

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

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

■ 手順2

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

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

■ 手順3

「データベースを閉じる」「終了」ボタンを無効にするリボン (XML) 項目を定義します。
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  <commands>
    <command idMso="FileCloseDatabase" enabled="false" />
    <command idMso="FileExit" enabled="false" />
  </commands>
  <backstage>
    <button idMso="FileCloseDatabase" visible="true" />
    <button idMso="FileExit" visible="true" />
  </backstage>
</customUI>

このXMLテキストを上記で作成した USysRibbons テーブルの RibbonXml カラムにレコードとして挿入します。RibbonName には任意の名前を付けます。無効にするのでなくボタンを表示しないならば、visible 属性を false にすればよい。

■ 手順4

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

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

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

■ 補足

Access 2013 だと、デフォルトでは「データベースを閉じる」ボタンが無いと思います、カスタマイズしないと出てきません。

■ 参考資料

Office 2010 の Backstage ビューについて (開発者向け)
http://msdn.microsoft.com/ja-jp/library/office/ee691833.aspx
Office 2010 の Backstage ビューのカスタマイズ (開発者向け)
http://msdn.microsoft.com/ja-jp/library/office/ee815851.aspx