#534 SendKeysでリボンを非表示にする方法 VBA

Access2007ではウィンドウ上部に「リボン」が表示されるのは周知のとおりですが、画面領域に対してけっこうな高さの領域を取ってしまうため、フォームに配置されるコントロール数が多い場合にはデザイン的に邪魔になることもあると思います。

そのような場合には、タブコントロールを使って画面分けする方法や改ページコントロールを使ってページ分けする方法もありますが、”あと少しだけ高さが取れれば”という程度のコントロール数の場合には、やはり使いやすいインタフェースの面からもリボンを非表示にするのが一番よいということもあります。

また、リボンの最小化および最小化の解除は、クイックアクセスツールバーの右端にある[クイックアクセスツールバーのカスタマイズ]のボタンで表示されるメニューで行うことができますが、これをユーザーが毎回行うのも面倒です。

そこで、このクイックアクセスツールバーからのメニュー操作はキーボードから「Ctrl+F1」キーでできるので、そのキー操作をVBAのプログラムから送信することで、リボンの表示・非表示を”交互に”切り替えることができます。VBAから特定のキー送信を行うには、「SendKeys」を利用します。


それには次のようにします。

■まず、データベースファイルの起動時に最初に開くフォームの「Load/読み込み時」イベントプロシージャに次のようなプログラムを記述します。これによってフォームが開くと同時にリボンが最小化されます。

Private Sub Form_Load()

  SendKeys "^{F1}", True

End Sub

リボンが最小化された状態
※ここでは”^”がCtrlキーの送信、”{F1}”がそれと同時にF1キーを送信することを意味しています。


■さらに、データベースファイルを閉じる際に最後に表示されているフォーム、たとえばメインメニューフォームなどの「Close/閉じる時」イベントプロシージャにも次のような上記と同じプログラムを記述します。この操作は必要なさそうですが、リボンの表示・非表示の状態は次回Access起動時にも再現されますので、他のAccessの利用時にデフォルト状態つまりリボンが表示されている状態に戻すためにこの処理を行うようにします。

Private Sub Form_Close()

  SendKeys "^{F1}", True

End Sub

リボンが通常表示された状態


参考Tips:「#535 Docmdオブジェクトでリボンを非表示にする方法」
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved