ExcelVBAのソースの比較方法
こんにちは。
今回は、ExcelVBAのソースの比較方法を書きたいと思います。
状況
僕の、仕事を簡単に言いますと、ソフトのシステムのテストやメンテの仕事をしています。言語は、C言語、Java、VBAをちょっとかじっています。
その影響で、ExcelVBAで作成したツールのメンテを依頼されました。
分かる人には分かると思いますが、会社のExcelVBAのツールと言うのは、個人が勝手に便利だと思い作ったものが多く、管理されていません。
基幹系システムは、仕様書やマニュアルがありますが、ExcelVBAのツールはないことが多いです。
よって、ExcelVBAのツールのメンテと言うのは結構大変です。
基本、リバースエンジニアリングで頑張るしかありません(😭)。
ExcelVBAのツールを、修正したんですが、修正前のソースと比較しようと思い、やり方を調べましたので、書きます。
WinMergeを使って比較
ExcelVBAのソースは、Excelに組み込まれているので、単純にソースの比較ができません。最初は、DFを使用して、比較しようと思いましたが、無理でした。
ググったら、WinMergeを使ったら良いと言うことが分かりました。
と言うわけで、以下のサイトからダウンロードして、インストールします。
僕の、PC環境は以下のようになっています。
・WinMerge:Ver2.16.0.7
インストール
基本、デフォルトのままで、次へボタンでインストールはOKです。
気を付けることは、プラグインが要りますので、プラグインにチェックが入っていることだけは確認しましょう。
入ってなかったら、インストール方法をカスタムにして、プラグインにチェックを入れて、インストールします。
準備
マクロを組んだExcelファイルを開きます。
「ファイル→オプション→セキュリティセンター→セキュリティセンター設定→マクロの設定→VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェックを入れます。
マクロを組んだExcelファイルが2個以上あると思いますので、すべて開いて確認しましょう。
比較
WinMergeを開き、マクロを組んだExcelを選択します。
右下に「展開プラグイン」と言う場所ありますので、自動を選択します。
環境によっては、「展開プラグイン」が自動では、Excelファイルの比較ができない場合があります。
そう言うときは、「展開プラグイン→選択→ファイル展開プラグイン→CompareMSExcelFiles.sct」を選んでOKを押しましょう。
「CompareMSExcelFiles.sct」はExcelファイルを比較するための、プラグインになります。
成功すると、以下のように、Excelファイル部分とソース部分が比較できます。
色付きは、相違があるとこになります。
以上です。
ソースを修正する場合、キーボードやマウスの操作ミスなどで、意図しない箇所が変更されている恐れがあります。
バグの元になりますので、ソースの履歴は確認するようにしましょう。