【開発事例】エンコーダー/デコーダーによるセキュリティ対応
- yuji fukami
- 9月17日
- 読了時間: 5分
※掲載している内容・資料は、実際の案件に基づきつつ、個人・企業が特定できないよう内容を一部加工・再構成したものです。守秘義務に配慮し、実際の顧客情報等は一切含まれておりません。
■ 背景と課題:セキュリティ対応
近年、企業のセキュリティ意識の高まりから、外部からのマクロ付きファイル(.xlsmなど)の受け取りが厳しく制限されています。このため、せっかく開発したVBAツールもお客様の環境で使えないという課題がありました。この問題を解決する安全なVBA納品方法を開発する必要があったのです。
このエンコーダー/デコーダーを利用すれば、開発者はマクロ付きのxlsmファイルを、マクロを含まないxlsxファイルとVBAソースコードのテキストファイル(bas、cls、frm、frx、txtなど)に分離(デコード)して送ることができます。お客様は、これらの安全なファイルを受け取り、ご自身で結合(エンコード)して元のxlsmファイルとして再構築できるようになります。
これにより、お客様はマルウェア感染リスクの高いxlsmファイルを直接受け取ることなく、xlsxファイルと、安全なVBAソースコード(bas、cls、frm、frx、txtなど)を個別に受け取って事前に確認できます。特に、AIツールと組み合わせることで、ソースコードの中身を詳細に検査し、安全性を確認するといった高度なセキュリティチェックも可能になります。
■システムの開発

この課題を解決するため、VBAの仕様を詳細に分析しました。特に、ブックやシートのモジュールがエクスポートはできるものの、再構築が難しいという技術的課題に直面しました。そこで、エクスポート可能な標準モジュール、クラス、ユーザーフォームはそのまま出力し、再構築が困難なブックやシートのモジュールはコードを直接読み込んでテキストファイルとして出力する独自の仕組みを考案・実装しました。これにより、確実に元のVBAプロジェクトを復元できるようにしました。
■システムの概要
このシステムは、VBAプロジェクトを分離・結合するデコーダー/エンコーダーで構成されており、マクロ付きファイルを安全にやり取りすることを目的としています。
システムの全体像は、「VBAプロジェクトをテキスト化して渡し、お客様側で復元する」というシンプルな流れです。
開発者側
デコーダーを使い、マクロ付きのxlsmファイルをxlsxファイルとVBAソースコードのテキストファイルに分離します。
お客様側
エンコーダーを使い、受け取ったxlsxファイルとVBAソースコードのテキストファイルを結合し、元のxlsmファイルに戻します。

1. デコーダー(分離ツール)
VBAプロジェクトの抽出と分解
マクロ付きのxlsmファイルを開き、クラス/標準モジュール、ユーザーフォームをcls、bas、frm、frxファイルとしてエクスポートします。一方、ブックやシートのモジュールは、コードを読み出してtxtファイルとして出力します。
参照設定の保存
VBAプロジェクトが参照する外部ライブラリの情報を抽出し、テキストファイルとして保存します。
マクロの削除
元のファイルからマクロ部分を削除し、マクロ無しのxlsxファイルとして保存します。
2. エンコーダー(結合ツール)
VBAプロジェクトの再構築
xlsxファイルを開き、デコーダーで出力されたテキストファイル群を読み込みます。エクスポートされたファイルはインポートし、シート・ブックモジュールは、各txtファイルのコードを読み込んで直接書き込みます。
参照設定の復元
保存されたテキストファイルから参照情報を読み込み、自動で設定を復元します。
マクロ有効化
最終的に、再構築されたプロジェクトを有効化し、xlsmファイルとして保存します。
■結果・導入後の効果
このシステムを導入したことで、お客様のセキュリティ要件をクリアし、VBAツールをスムーズに導入できるようになりました。
セキュリティの確保
マクロ付きファイルの直接的なやり取りを避け、マルウェア感染リスクを低減しました。
導入の簡便性
お客様は複雑な操作をすることなく、エンコーダーを実行するだけでVBAプロジェクトを復元できます。これにより、導入時の手間やIT部門との調整を最小限に抑えることができました。
AI活用(副次的効果)
デコードで分離されたファイル群は生成AIに読み込ませやすい形式になるので、そこから開発したマクロ付ブックの仕組みの解説、コードの解説などを任せることもできるようになる。xlsmファイルそのままのファイルを生成AIに読み込ませても満足いくようには中身を読み取ってくれない点に対しての解決策。実際に私の書いている記事の一部はこの方法を利用している。
■コメント
この開発事例は、単に技術的なスキルを示すだけでなく、お客様の抱えるビジネス上の課題を深く理解し、柔軟に対応する私たちの強みを示すものです。セキュリティと利便性を両立させたソリューションとして、お客様からは高い評価をいただいています。
VBA開発のスキルを活かして、お客様の業務効率化はもちろんのこと、お客様の潜在的な課題を解決するパートナーとして貢献できることが、私たちの最大の喜びです。



コメント