Access 2010で作ったシステムをランタイム版で動かすということがよくあるのですが、通常版とランタイム版で微妙に動作が違ったりすることがあります。
たとえばレポートのプレビュー画面上で右クリックしてもショートカットメニューが表示されません。
画面上部のリボンメニューを使えばいいじゃないかと思われるかもしれませんが、レポートをポップアップ表示にしているとこれも使えないんですね。
ではどうすればいいかというと、自前のメニューを作ってあげれば出来ます。
作り方はとても簡単です。
VBAでちょっとコードを書いてあげるだけです。
まずVBEで、Microsoft Office 14.0 Object Library への参照を設定してください。
次に、標準モジュールに以下のようなプロシージャを作ってください。
Public Sub CreateReportShortcutMenu() Dim cmbRightClick As Office.CommandBar Dim cmbControl As Office.CommandBarControl Set cmbRightClick = CommandBars.Add("cmdReportRightClick", msoBarPopup, False, True) With cmbRightClick '印刷 Set cmbControl = .Controls.Add(msoControlButton, 2521, , , True) cmbControl.Caption = "即印刷" '印刷 Set cmbControl = .Controls.Add(msoControlButton, 15948, , , True) cmbControl.Caption = "印刷" 'ページ設定 Set cmbControl = .Controls.Add(msoControlButton, 247, , , True) cmbControl.Caption = "ページ設定" 'メールで送る Set cmbControl = .Controls.Add(msoControlButton, 2188, , , True) '新しいグループ開始 cmbControl.BeginGroup = True cmbControl.Caption = "メールで送る" 'PDFまたはXPS Set cmbControl = .Controls.Add(msoControlButton, 12499, , , True) cmbControl.Caption = "PDFまたはXPSとして出力" '閉じる Set cmbControl = .Controls.Add(msoControlButton, 923, , , True) '新しいグループ開始 cmbControl.BeginGroup = True cmbControl.Caption = "閉じる" End With Set cmbControl = Nothing Set cmbRightClick = Nothing End Sub
ここでは、CommandBarオブジェクトのAddメソッドを使って、
"cmdReportRightClick"という名前のショートカットメニューを作成しています。
ちなみに、ソースコードの中にあるそれぞれメニューごとに振ってある2521とか247といった数字はCommandBarControlのIDでメニューごとに決められています。
このID値はなぜかマイクロソフトで公開されてなくて探すのに苦労したのですが、以下のサイトで一覧を公開されててとても助かりました。
Office 2007/2010・リボンのカスタマイズ 初心者備忘録
次にこのショートカットメニューをレポートに割り当てます。
レポートプロパティのショートカットメニューバーに[cmdReportRightClick]を設定します。
あとは、このプロシージャをプログラム起動時に呼び出してあげればOKです。
実行するとこんな感じになります。
コメントをお書きください