Accessで必ず使う VBA Navigation Paneにアクションマクロボタンだけ表示させるか切り替えるVBA


NavigationはPaneかWindowか

今一つ揺れるんですけど、現在の解説は単にNavigationとしているみたいですね
とりあえずナビゲーションペインと呼んでいます。
VBAではそうなっているので。

アクションマクロで起動することでメニュー画面にする

アクションマクロボタン自体をメニューにすることも可能ですが、デザインに時間がかかります。
そこで、単純にマクロボタンだけ表示させるようにして、マクロボタンのところをメニュー画面代わりにしようというものです。

マクロボタンのとても便利な点

といってもかなりコアですが・・・

CSVファイルを読み込むSelect Into系のクエリは、データベースと同じフォルダにあるファイルをしているすると、なぜか次から表示されなくなります。
たしかにフォルダを移動するからそれもありですが、やはり困ったものです。
ところがマクロボタンにSQLを登録するとフォルダ名が変わりません。
実はアクションクエリ保存ボタンだったのです。

まずコード

マクロからSubプロシージャを起動する場合、このように起動するユーザー定義関数が必ず必要です。これではちょっと紛らわしいので
mcr_Moduleといった名前のモジュールを作成してユーザー定義関数(User-defined function,UDF)はそこに書くようにしています。っそのかわり別のモジュールから呼び出すために、Publicがついているわけです。

さらにこうしたSwitchNavigationDiscriptionOptionのようなものはどういうAccessのデータベースでも役立ちます。こうしたどのデータベースでも使用するコードはTool_acModuleに入れます。すると、Exportすれば他のデータベースでも使えるため、毎回コードを書かなくて住みます。なおacModuleはAccessのモジュールを表しています。McrはMacroとしたいのですが、Mainの前に来てしまうので、ちょっと省略した形になっています。

実際にMcr_acModuleに入れているところです。Tool用は共用のため、他と分けて書いておきます

実際にこういうイメージで、Tool用は下に来るようにします。

注意

このVBAは起動する前にまずマクロボタンを作ってください。
そうしないと全く表示されなくなります。

Public Function Macro_SwitchNavigationDiscriptionOption()
Call SwitchNavigationDiscriptionOption
End Function

Public Sub SwitchNavigationDiscriptionOption()
Dim flag As Boolean
flag = Application.GetOption("Show Hidden Objects")
If flag = True Then
DoCmd.NavigateTo "acNavigationCategoryObjectType"
DoCmd.RunCommand acCmdViewMacros
Else
DoCmd.NavigateTo "acNavigationCategoryObjectType"
End If
Application.SetOption "Show System Objects", Not flag
Application.SetOption "Show Hidden Objects", Not flag
Application.SetOption "Show Navigation Pane Search Bar", True
End Sub

アクションマクロのプロシージャの実行はユーザー定義関数がないとできない

VBAとアクションマクロ、連携して使いたいのですが、このような変なルールがあります。

ユーザー定義関数のテクニック

できればこのマクロ用のユーザー定義関数だけのモジュールがあったほうが良いです。
作り方はまずSubを作ります。
そして名前をコピーします。
Function のあとにMacro_と打ってコピペします。
Call のあとにコピペします
マクロボタンを作成し、プロシージャの実行でMacro_とするとアクションマクロ用の関数だけが出てきます。出てこないときは
Macro_としてコピペし、半角の()をつけます
この()は大事です。

マクロボタンは名前で優先順位が付くようにする

次にマクロボタンは手順に沿って使う順番にネーミングします。
01_CSVのインポート
といった感じです
システムのメンテナンスはツールとして
T_Navigation詳細表示とします。
今回のVBAはここに登録します。
するとメンテナンスは後ろ、操作は上にきます。
機種依存文字の使用はできません。
またテーブル、クエリ等を含めて名前は固有でなければならず、重複ができません。

この他お役立ちMacro

隠し機能のアプリケーションの起動でcalc.exeが起動できます。