VBA Excel - ユーザーが即時ウィンドウでマクロを呼び出せたり実行できないようにする方法はありますか?

VBA Excel - ユーザーが即時ウィンドウでマクロを呼び出せたり実行できないようにする方法はありますか?

そこで、VBA アプリケーションを作成し、VBAProject をロックしました (表示不可)。ただし、もちろん、ユーザーは引き続きイミディエイト ウィンドウにアクセスできます (たとえば、別の Excel ファイルを開いて、ロックされていても私の VBAProject をクリックした場合)。私の VBAProject がロックされていて表示不可であるにもかかわらず、別の Excel を開いているユーザーは、私のイミディエイト ウィンドウにアクセスして、私のマクロを実行したり、実行するコードをいくつか入力したりすることができます。もちろん、マクロに名前を付けた方法はわかりませんが、おそらくコードを実行して名前 (プロシージャ名) のリストを取得することはできます。つまり、ユーザーが私の VBAProject イミディエイト ウィンドウでコードを実行したり、マクロを呼び出したりできないようにすることは可能でしょうか。

答え1

簡単に言えば、Privateキーワードを使用します。

もっと長い答え: ソースコードを保護する唯一の方法は、決して公開しないことです。

長い答え: VBA エディターへのアクセスを積極的にブロックする VBA プロジェクトを作成することは可能ですが、これは非倫理的であり、プロジェクト パスワードと同様にソース コードを保護することはできません。

ブックを開いた直後に閉じるという昔からのWorkbook.Closeいたずらを考えてみましょう。ユーザーが行う必要があるのは、マクロを無効にしてブックを再度開くことだけです。VBA で記述するすべてのコードにも同じことが当てはまります。セキュリティ アクションの実行に VBA に依存している場合、マクロが無効になるとセキュリティが失われます。

これを、プロジェクト パスワードで得られるセキュリティと比較してください。確かに、パスワードを破ることはほとんどの開発者にとって簡単なことですが、より多くの労力が必要であり、ほとんどの一般ユーザーを阻止します。重要なのは、パスワードによって、あなたとあなたのソフトウェアが、尊重される側に留まるということです。

VBA の代わりに、または VBA と組み合わせて外部ツールを使用することについて話し合う必要がありますが、これはあなたが尋ねた質問よりもかなり複雑です。提案されているように動作する場合、これはマルウェアという用語の定義にも当てはまります。

関連情報