ExcelVBAモジュール状況一覧

ソースコードの行数を洗い出すツールです。
ExcelVBAで巨大プロジェクトを推奨するわけではありません...   ExcelVBAの開発資産の「棚卸し」を行なう時に必要なツールです。
例えば、各現場で作成していたExcelVBAのプログラムをVB.NETに移行させてまとめようなどということがあれば、 対象となるExcelVBAの開発規模を算出する必要がありますが、このような時にフォルダに集めたワークブックからワンタッチで情報を収集できるツールです。 この作業を「手作業」で行なうとなると、各ワークブックから各モジュールをエクスポートして、テキストエディタなどで行数を数えることになるのですが、 本プログラムではさらに「空行」「コメント行」もカウントして「コメント率」も算出しています。
起動画面はこのようになっています。

ExcelVBAモジュール状況一覧(画面)

このような起動画面です。
各項目は以下のような機能になっています。

画面項目 説明
システムタイトル 当該ソリューションのタイトルを任意に指定できます。 システムタイトル別にフォルダ設定などは設定に保持されて2回目の利用以降はプルダウンで選択するだけで再現されるようになっています。
ルートフォルダ 指定したシステムタイトルでの検索を行なうファイル群がある最上位フォルダを指定します。右端の「-」ボタンでフォルダ検索フォームが現われて指定できますが、多くの場合はフォルダウィンドウ(エクスプローラ)からドラッグ&ドロップで指定する方が簡単です。
検索ファイル種別 検索ファイル種別は、Excelの拡張子による選択です。不要な拡張子があればチェックを外して下さい。
システムタイトル削除
(メニュー)
「システムタイトル」「ルートフォルダ」は本機能で繰り返し利用されることを想定しています。 「システムタイトル」のプルダウンによりセットで再表示できるようになっていますが、 この「システムタイトル」はセットを認識するメインキーです。
一旦登録してキーワード検索を実施すると閉じた時に設定に追加登録されるわけですが、 この「システムタイトル」の文字列を後から変更すると新旧2つがプルダウンに表示されるという現象になります。
不要な「システムタイトル」が表示された場合はメニューの「システムタイトル削除」で削除することができます。

出力結果はこのように表示されます。

ExcelVBAモジュール状況一覧(結果)

3列目(C)からの画面になっていますが、実際にはこの左に「フォルダ名」「ファイル名」の列があります。
「空行」「コメント」は「全行数」の内訳となり、「()」はコメント率で空行を除いた全行数を分母に算出しています。

有効なソースコードがないモジュールはゼロで処理され、シート上はブランクで表示されます。

いかがでしょうか?
例えば多数のマクロを持つワークブックを作成していたとして、中には祝日判定などの共通モジュールを盛り込んでいたとしましょう。 ExcelVBAの場合は「共通モジュール」と言ってもそれは作成時点の話であって、各ワークブックにはコピーが持ち込まれるだけで、 以後の運用として「共通」が保たれるわけではありません。
例えば祝日法が改正されたり、天皇の退位・即位で天皇誕生日が変わると祝日判定モジュールは変更しなければなりません。 ここで、作成したマクロを含むワークブック原本のコピーをある決まったフォルダに格納しておくという運用を行なって、 このようなケースが発生した時に本プログラムでどのワークブックやアドインに祝日判定モジュールが含まれているかを見つけることができます。

なお、残念ながら、動作の上で前提条件があります。

本プログラムは参照しかしませんが、それでもプログラムからExcelVBAのソースコードを操作することになるので、セキュリティ上で以下の設定・許可がないと動作しません。

  • Microsoft Excelがインストールされていること(当然ですが)
    動作環境にも記載していますが、Excel2007以降がインストールされている必要があります。32ビット版のみの対応となります。
    Windows64ビット版でも問題ありません)
  • セキュリティセンター(トラストセンター)のマクロの設定で「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェックがあること
    このチェックを付けずに動作させると、対象ワークブックはすべて「プログラミングによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます」というエラーになります。
    ※このチェックは本プログラム利用時のみで良く、利用後は戻して構いません。
  • 検索対象ワークブックのVBAプロジェクトがパスワード保護されていないこと
    プログラムからVBAプロジェクトのパスワード保護を解除することはできません。
    パスワード保護が掛かっているワークブックについては「プロジェクトが保護されているため、操作を実行することができません。」というエラーになります。
    事前にパスワード保護を解除して保存させたワークブックに対して処理を行なって下さい。
インストールについて
下記の「ダウンロード」からインストーラが収容されたZIP形式の圧縮ファイルがダウンロードできます。



動作環境はMicrosoft .NET Framework 4.*(4.5~4.8)です。
本アプリケーションは32ビット版ですが、Windows64ビット版でも問題ありません。



当然ながら、Microsoft Excel(32ビット版のみ対応)がインストールされていることが起動の前提条件となります。

解凍してから「ExcelVBAMakeModuleList_Setup.exe」を起動することでインストールが行なわれます。インストール後はスタートメニューの「すべてのプログラム」から「Excelでお仕事!VisualStudioツール」の中にある「ExcelVBAモジュール状況一覧」を起動して下さい。 なお、デジタル証明書は搭載していないので、インストール中の確認画面で発行元は「不明」と表示されます。

アンインストールを行なう場合は、コントロールパネルの「プログラムと機能(プログラムの追加と削除)」から「ExcelVBAモジュール状況一覧」を選択して「削除」を実行します。
本ソフトではレジストリは使用していません。画面モードの設定保存はMicrosoft .NET Frameworkの設定保持機能を使っています。

著作権等について
本ソフトの著作権は「Excelでお仕事!(井上 治)」が所有しています。
フリーソフトですのでご自由にダウンロードしてご利用いただけます。 但し、動作確認は充分に行なっておりますが、このソフトを使ったことによって損害が発生しても一切の責任は負えません。

本記事内容の転載についてはアーカイブに変更を加えないことを条件に、転載は自由にして頂いて構いませんが、必ずご連絡いただくようにお願いします。 連絡については当サイトの「意見・質問」ペ-ジが利用できます。
また、不具合や改善点などについてもご連絡いただけると幸いです。

バージョン情報

更新日 Ver 内容
2016/11/26 1.0.0.0 新規作成
2018/08/08 1.0.2.0 Excelのバイナリ形式ワークブック(*.xlsb)の対応を追加
2018/10/06 1.0.3.0 DPI環境で起動時フォーム位置がスクリーン領域外になってしまうことが発生する件の対応
2018/11/04 1.0.3.1 画面位置保持機能について複数画面時の個別DPI指定に対応する修正②
2019/06/28 1.0.4.0 「総合計を追加する」追加、Excelシートのレイアウト見直し
2021/10/15 1.0.4.2 開発環境を「Microsoft Visual Studio 2010」から「Microsoft Visual Studio 2019」に変更
2021/11/29 1.1.0.0 フレームワーク環境を「.NET Framework4.x」に変更
(ターゲットフレームワークは「.NET Framework4.5」に設定)
2022/05/14 1.1.0.2 ・開発環境を「Microsoft Visual Studio 2022」に変更
Windowsスタートメニューメンバの整理(概要説明リンクの削除⇒本体メニューから呼び出し可能)
2023/01/15 1.1.1.0 独自メッセージボックス変更(マウス既定ボタンモード対応)

※バージョンアップでのインストール時に動作上は正常にインストールされるものの、EXEファイルが置き換わらない現象があるようです。 フォーム上の各コントロールをマウスでポイントするとツールチップでバージョンが表示されるので、新しいバージョンになっていない場合は一旦アンインストールさせてから再度インストールさせて下さい。 この方法でも設定内容は保持されます。

ダウンロードはこちら。

←ExcelVBAMakeModuleList_Setup.zip
      (1190KB)
.NET Frameworkの変更について   PCに搭載されている.NET Frameworkのバージョンはその有無を含めてWindows側の環境に依存します。
本プログラムは従来、古いWindowsへの対応から、.NET Framework2.0~3.5をターゲットとしていましたが、 現在では逆に.NET Framework3.5をインストールすることが必要となって余分な作業負荷となってしまってきているため、 Ver1.1.0.0より.NET Framework4.xに変更しました。



本プログラムを新規にインストールされる場合は必要な.NET Framework環境の確認だけでご利用いただけますが、 以前の.NET Frameworkバージョンから.NET Framework4.xにバージョンアップされる場合のみ設定やデータが引き継がれないのでご注意下さい。



手動作業での設定引き継ぎ(設定ファイルのコピー作業)バージョンアップ時の不具合については、こちらで説明しています。



一旦、.NET Framework4.x環境に移行した後の今後のバージョンアップについての設定内容は、自動的に引き継がれるようになります。