<VBA>マクロ(プロシージャ)名を表示させない方法
課題 プロジェクトをプロテクトしても 開発→マクロ 等の操作でマクロ名一覧が表示されてしまい、起動可能となる。
解決方法
1、プライベートマクロとして作成する。
2、引数を持つマクロとして作成する。
解説
- 方法1
- 最も正当。見せたくないマクロは すべからく Private宣言しておく。
- Private宣言しても 以下の方法でワークシートボタンクリック、テキストボックスクリックなどのフォームコントロールクリックでの呼び出しは可能。
- 先ずPrivate宣言をせずにマクロとフォームコントロールと関係づける。
- 関係づけ後にPrivate宣言を行う。
- 他のモジュールからの呼びだしは出来ない。
- 方法2
- 該当マクロを他のモジュールから呼び出したい場合は引数を持つマクロとして作成する。
- 引数はマクロ中で使用しないダミーを設定してよいが、省略はできない。
- <注意>
Optional,ParamArrayで省略可能な引数を設定した場合、作成直後はマクロリストに表示されないが、一度でも引数省略で呼び出しを行うと、リストに表示されるようになる。
- <注意>
- リスト表示はされないがマクロ名と引数がわかれば他のブックなどから呼び出し可能。
- 他からの予期せぬアクセスを防止したい場合は、引数をパスワードとして使用する、あるいは Application.Callerを用いて呼び出し元をチェックするなどで対応する。