• ベストアンサー

アクセス2007 SetOptionについて

アクセス2007 SetOptionについて アクセス2007の「Accessのオプション」→「カレントデータベース」→「リボンとツールバーのオプション」 のなかの、「規定のショートカットメニュー」のチェックをはずす。 これをVBAで記述したいのですが、コードがわかりません。 御存知の方、教えて下さい。  

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

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

今更かもしれませんが・・・(汗) 『既定のショートカット メニュー』の設定は、手動で切り替えた際の メッセージにもあるとおり、再起動しないと有効になりません。 (そう言いつつも、『ナビゲーション ウィンドウの表示』のように、  「設定の即時無効化」が可能な項目もあったりするのですが(汗):  但し、これも「非表示→表示」の一方通行で、完全ではありません) [参考]ナビゲーションウィンドウの即時表示方法(フォームからの場合):   DoCmd.SelectObject acForm, Me.Name, True ですので、(「設定変更の即時有効化」に比べると、だいぶ手間が 掛かってしまいますが、)代替策を2つほどご紹介してみます。 【案1・フォーム側の『ショートカットメニュー』の設定を切り替える】 『既定のショートカット メニュー』が有効な状態でも、各フォームの 『ショートカットメニュー』プロパティを「いいえ」に設定すれば、 フォーム上でのショートカットメニューは無効化できます。 但し、「全てのフォームで個別に設定が必要」なのと、「テーブル本体 やナビゲーション ウィンドウの表示が許可されている場合、そこでの ショートカットメニューは無効にならない」という問題があります。 【案2・管理者用と一般ユーザー用に、データベースを分割する】 2007でのマルチユーザーでの動作確認ができていませんが、恐らく Access2003までと同様、他のユーザーが使用中の場合にはデザイン ビューで開くことはできても、変更の保存はできないものと思います。 この問題を回避する意味でも、こちらの手段をお勧めします。 これを行うにあたっては、「管理者/一般」用の分割を行う前に、 「テーブル」のみを持つ「バックエンドエンド」ファイルと、「それ以外」を 持つ「フロントエンド」ファイルに分割する必要があります。 分割は、手動でも行えますが、ウィザードでも行えます: http://office.microsoft.com/ja-jp/access/HA102400961041.aspx 手動の場合は、  1)新規MDBファイルを作成し、全テーブルを一括インポート   (既存MDBからの「エクスポート」だと個別になるため手間が膨大)  2)既存MDBからテーブルを全て削除  3)新規MDBの全テーブルに対して、改めてリンクテーブルを作成 でOKです。 これで、バックエンド(テーブル)側さえ共有にしてしまえば、全ての ユーザーが同じテーブルの読み書きをすることができます。 あとは、フロントエンド側をコピーして配布(ネットワークにつながった 各個人のPCに保存)すれば、一般ユーザーに対してはショートカット メニュー等の使用を制限しつつ、管理者は(自分のPCに保存した MDBファイルを使用することで)いつでもデザイン変更が可能、という 運用方法をとることができます。 (配布ファイルのみ、『既定のショートカットメニュー』をオフにする、と) ※現状では、1つのMDBファイルを共有しているのかと思いますが、   本来は各個人のPCにフロントエンドのコピーを置く形にした方が、   データベースとしては安定します。   但し、管理者のPC上でのデザイン変更は、(当然ながら)他のPC   に自動では反映されないので、各ユーザーにその都度配布する   (または最新ファイルの保存場所を決め、各自にコピーしてもらう)   か、その差替を自動で行う仕組みをつくる必要が生じますが(汗) ・・・以上、参考まで。

situmonnsya
質問者

お礼

DoCmd.ShowToolbar "Ribbon", acToolbarYes / No パスをもっている「管理者」に対しては受け付ける。 もっていない「ゲスト」には受け付けない。 受付たらアクセスの再起動で次回から。としました。 >データベースを分割する は今後の参考にさせて頂きます。 お礼が遅くなり申し訳ありませんでした。 ありがとうございます。

その他の回答 (4)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

起動されるとき(=設定を非表示へ) 一般ユーザでシステムログインしフォームを開くとき(=設定を非表示へ) 管理ユーザでシステムログインしフォームを開くとき(=設定を表示へ) 終了するとき(=設定を初期値の表示へ戻す) はっきりしたサンプルが手元にないのですぐにはわかりませんが、 コードは、他の回答例が参考になりネットでもありそうです。 こういうそれぞれのイベントで設定を行うことになると思います。

situmonnsya
質問者

お礼

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

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

そうさせたいタイミングをもう一度教えてください。 通常ACCESSを使うときでしょうか。 (システム化した)MDBファイルがあってその起動から終了まででしょうか。 (システム化した)MDBファイルがあってその中のとあるフォームを開いているときでしょうか。

situmonnsya
質問者

補足

システム化した2007MDBファイルが運用されている時「随時に」です。 独自のパスワードを設けていて、管理者以外(パスワード無)の使用時は、マウス右ボタンメニューが出ない。 管理者(パスワード有)の使用時であったら、マウス右ボタンメニューが出る。 例えば、管理者なのにパスワード無で使用中、「ちょっと中身を変更」と思った時、パスワードを入力して 管理権限を獲得して(ここでマウス右メニューが「出る」)フォームをデザインモードにする。とか。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

CurrentDB.Properties("AllowShortcutMenus")=False

situmonnsya
質問者

補足

>「規定のショートカットメニュー」のチェックをはずす。 をしたかったのは、マウスの右クリックでアクセス本体のメニューを出したくなかったからです。 ご教示のコードだと、その場での反応がなく(マウスでの)、次回起動での反応になってしまいました。

回答No.1

Application.CommandBarsでACCESSのメニューとツールバーなどを制御できる。 例: メニュー「表示」使用不可になりたい場合。 Application.CommandBars("Menu Bar").Controls("表示(&V)").Enabled = False メニュー「表示」不表示になりたい場合。 Application.CommandBars("Menu Bar").Controls("表示(&V)").Visible = false ご参考ください。

situmonnsya
質問者

補足

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

関連するQ&A