プロが教える店舗&オフィスのセキュリティ対策術

アクセス2007 SetOptionについて

アクセス2007の「Accessのオプション」→「カレントデータベース」→「リボンとツールバーのオプション」
のなかの、「規定のショートカットメニュー」のチェックをはずす。

これをVBAで記述したいのですが、コードがわかりません。
御存知の方、教えて下さい。


 

A 回答 (5件)

今更かもしれませんが・・・(汗)



『既定のショートカット メニュー』の設定は、手動で切り替えた際の
メッセージにもあるとおり、再起動しないと有効になりません。
(そう言いつつも、『ナビゲーション ウィンドウの表示』のように、
 「設定の即時無効化」が可能な項目もあったりするのですが(汗):
 但し、これも「非表示→表示」の一方通行で、完全ではありません)

[参考]ナビゲーションウィンドウの即時表示方法(フォームからの場合):
  DoCmd.SelectObject acForm, Me.Name, True

ですので、(「設定変更の即時有効化」に比べると、だいぶ手間が
掛かってしまいますが、)代替策を2つほどご紹介してみます。


【案1・フォーム側の『ショートカットメニュー』の設定を切り替える】

『既定のショートカット メニュー』が有効な状態でも、各フォームの
『ショートカットメニュー』プロパティを「いいえ」に設定すれば、
フォーム上でのショートカットメニューは無効化できます。

但し、「全てのフォームで個別に設定が必要」なのと、「テーブル本体
やナビゲーション ウィンドウの表示が許可されている場合、そこでの
ショートカットメニューは無効にならない」という問題があります。


【案2・管理者用と一般ユーザー用に、データベースを分割する】

2007でのマルチユーザーでの動作確認ができていませんが、恐らく
Access2003までと同様、他のユーザーが使用中の場合にはデザイン
ビューで開くことはできても、変更の保存はできないものと思います。
この問題を回避する意味でも、こちらの手段をお勧めします。

これを行うにあたっては、「管理者/一般」用の分割を行う前に、
「テーブル」のみを持つ「バックエンドエンド」ファイルと、「それ以外」を
持つ「フロントエンド」ファイルに分割する必要があります。

分割は、手動でも行えますが、ウィザードでも行えます:
http://office.microsoft.com/ja-jp/access/HA10240 …

手動の場合は、
 1)新規MDBファイルを作成し、全テーブルを一括インポート
  (既存MDBからの「エクスポート」だと個別になるため手間が膨大)
 2)既存MDBからテーブルを全て削除
 3)新規MDBの全テーブルに対して、改めてリンクテーブルを作成
でOKです。

これで、バックエンド(テーブル)側さえ共有にしてしまえば、全ての
ユーザーが同じテーブルの読み書きをすることができます。

あとは、フロントエンド側をコピーして配布(ネットワークにつながった
各個人のPCに保存)すれば、一般ユーザーに対してはショートカット
メニュー等の使用を制限しつつ、管理者は(自分のPCに保存した
MDBファイルを使用することで)いつでもデザイン変更が可能、という
運用方法をとることができます。
(配布ファイルのみ、『既定のショートカットメニュー』をオフにする、と)

※現状では、1つのMDBファイルを共有しているのかと思いますが、
  本来は各個人のPCにフロントエンドのコピーを置く形にした方が、
  データベースとしては安定します。
  但し、管理者のPC上でのデザイン変更は、(当然ながら)他のPC
  に自動では反映されないので、各ユーザーにその都度配布する
  (または最新ファイルの保存場所を決め、各自にコピーしてもらう)
  か、その差替を自動で行う仕組みをつくる必要が生じますが(汗)


・・・以上、参考まで。
    • good
    • 0
この回答へのお礼

DoCmd.ShowToolbar "Ribbon", acToolbarYes / No
パスをもっている「管理者」に対しては受け付ける。
もっていない「ゲスト」には受け付けない。
受付たらアクセスの再起動で次回から。としました。

>データベースを分割する
は今後の参考にさせて頂きます。

お礼が遅くなり申し訳ありませんでした。
ありがとうございます。

お礼日時:2010/06/10 11:22

起動されるとき(=設定を非表示へ)


一般ユーザでシステムログインしフォームを開くとき(=設定を非表示へ)
管理ユーザでシステムログインしフォームを開くとき(=設定を表示へ)
終了するとき(=設定を初期値の表示へ戻す)

はっきりしたサンプルが手元にないのですぐにはわかりませんが、
コードは、他の回答例が参考になりネットでもありそうです。

こういうそれぞれのイベントで設定を行うことになると思います。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありませんでした。
アクセスの再起動で対処しました。
ありがとうございます。

お礼日時:2010/06/10 11:23

そうさせたいタイミングをもう一度教えてください。



通常ACCESSを使うときでしょうか。
(システム化した)MDBファイルがあってその起動から終了まででしょうか。
(システム化した)MDBファイルがあってその中のとあるフォームを開いているときでしょうか。

この回答への補足

システム化した2007MDBファイルが運用されている時「随時に」です。

独自のパスワードを設けていて、管理者以外(パスワード無)の使用時は、マウス右ボタンメニューが出ない。
管理者(パスワード有)の使用時であったら、マウス右ボタンメニューが出る。

例えば、管理者なのにパスワード無で使用中、「ちょっと中身を変更」と思った時、パスワードを入力して
管理権限を獲得して(ここでマウス右メニューが「出る」)フォームをデザインモードにする。とか。

補足日時:2010/05/30 15:50
    • good
    • 0

CurrentDB.Properties("AllowShortcutMenus")=False

この回答への補足

>「規定のショートカットメニュー」のチェックをはずす。
をしたかったのは、マウスの右クリックでアクセス本体のメニューを出したくなかったからです。

ご教示のコードだと、その場での反応がなく(マウスでの)、次回起動での反応になってしまいました。

補足日時:2010/05/27 02:26
    • good
    • 0

Application.CommandBarsでACCESSのメニューとツールバーなどを制御できる。


例:
メニュー「表示」使用不可になりたい場合。
Application.CommandBars("Menu Bar").Controls("表示(&V)").Enabled = False

メニュー「表示」不表示になりたい場合。
Application.CommandBars("Menu Bar").Controls("表示(&V)").Visible = false

ご参考ください。
「アクセス2007 SetOptionにつ」の回答画像1

この回答への補足

アクセス2007ですが、「エラー」にもならないですが、メニュー制御出来ませんでした。

補足日時:2010/05/27 02:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!