VBAコードをロックしてパスワードで保護する標準的な方法には簡単な回避策があることがわかったので、コードを保護するより効果的な方法に移りたいと思います。私はExcelベースのツールをクライアントに提供する予定ですが、最も怠惰なハッカーを阻止するだけの単純な迷惑タイプの保護以上のものが必要です。
Excel-VBAにオプションはありますか、それとも別のアプリケーションをコンパイルしてExcelベースのインターフェイスを忘れる必要がありますか?
最も簡単で効率的な方法は、VBAコードをVB6でコンパイルされたCom/automationアドインに移動することです。
または、パフォーマンスが重要でない場合は、.Net(難読化機能付き)ソリューションを検討することをお勧めします。
別の言語に変換する必要はありません。www.vbsobfuscator.comからほとんどのVBAコードを難読化できるはずです[注:archive.orgへのリンク]
もう1つの秘訣は、AccessのExcelオブジェクトに対してコードを記述し、アクセスファイルを.mdehttp : //www.blog.methodsinexcel.co.uk/?s=Access+MDBに作成することです。
実際には、VBA難読化ツールは、アルゴリズムの構造を変更せずにVBAコードを保護しません。これは、元のアルゴリズムにまでさかのぼって復元できるためです。
VBAコードをVB6に変換すると、アプリケーションは32ビットExcelに制限され(VB6には64ビットバージョンがありません)、https: //www.vb-decompiler.org/などのVB逆コンパイラーで逆コンパイルできます。
.NETには、コンパイルされた.NETアセンブリのコードを元のソースコードに変換できる「リフレクション」メカニズムがあるため、VBAコードをVB.NETに変換することも完全なソリューションではありません。
VBAコードをC/C ++に変換できます。これは非常に効果的な保護形式ですが、C / C ++とVBAはプログラミング言語が大きく異なるため、VBAコードからC / C ++への変換は難しく、エラーが発生しやすく、一般的に、それにかかる膨大な時間と労力の価値はありません。
VBAコードをC言語コードに変換してDLLにコンパイルするVbaCompilerforExcel(http://vbacompiler.com)というツールがあります。このツールが提供すると主張する保護のレベルは、VBAコードをC / C ++に変換するレベルと似ていますが、そのようなプロセスに必要な大量の手作業はありません。