ExcelVBAキーワード使用一覧(Grepツール)

Excelワークブック内のマクロのソースコードを検索するツールです。
VB.NET版は以前からあったのですが...   VB.NETではVB.NETキーワード使用一覧」を以前から作成しておりました。
これは数十万行にもなるソリューションを管理しているために必要となるツールです。 VB.NETでは配布先のバージョン管理は「ClickOnce」で解決してしまうので、単にソリューションを構成する各プロジェクトでの記述差異のチェックのために用いるツールです。
一方、ExcelVBAでは一旦マクロを組み込んで作成したワークブックは運用サイドで「複製」が作られてしまうので、バージョンの改変があるとどうしても「配布の問題」が発生します。
マクロの記述は共通モジュールを作成して記述差異を防ごうとしても、その共通モジュールに変更が入った場合はそれまでに作成したすべてのワークブックに対してモジュールの差し替えという作業が発生してしまいます。 ExcelVBAではモジュールやクラスを外部に置いておいてリンク参照するということができないのでこの点はしかたありませんが、ではどのワークブックが未変更、どのワークブックが変更済みなのか、 という点についても、普通の方法であればそれぞれのワークブックを開いてVisualBasicEditorを起動して確認しなければならないので、このツールがあれば業務の改善になるはずです。
起動画面はこのようになっています。

ExcelVBAキーワード使用一覧(画面)

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

画面項目 説明
システムタイトル 当該ソリューションのタイトルを任意に指定できます。 システムタイトル別にフォルダ設定などは設定に保持されて2回目の利用以降はプルダウンで選択するだけで再現されるようになっています。
ルートフォルダ 指定したシステムタイトルでの検索を行なうファイル群がある最上位フォルダを指定します。右端の「-」ボタンでフォルダ検索フォームが現われて指定できますが、多くの場合はフォルダウィンドウ(エクスプローラ)からドラッグ&ドロップで指定する方が簡単です。
検索キーワード 検索キーワード(ソースコードの一部の検索を所望する文字列)を指定します。
1つのキーワードの入力を始めると、すぐに次の行が表示されます。複数指定した場合は左の「複数指定時の動作」によりOR条件またはAND条件として動作します。 単純文字列の検索でない場合は、下記の「検索オプション」で「正規表現を使用」にチェックをつけて正規表現の規則を使用して下さい。
検索キーワードの入力については通常の1行ずつの入力の他に、テキストファイルからドラッグさせての登録や、テキストエディタ等の画面からコピーしたものを右クリックから複数行分まとめて貼り付ける機能もあります。 ファイルからのドラッグも右クリックからの貼り付けも以前に登録されたキーワードは無視されて全行が新規登録となります。
コメント行を無視する
(検索オプション)
チェックを付けるとコメント領域にあるキーワードは抽出されません。チェックを付けなければコメント領域も検索抽出の対象になります。
大文字と小文字を区別する
(検索オプション)
チェックを付けると検索キーワードと大文字・小文字の並びまで一致しないと抽出されなくなります。チェックを付けなければ大文字・小文字の一致は要求されずに抽出されます。
キーワード指定に正規表現を使用
(検索オプション)
チェックを付けると.NET Frameworkの正規表現エンジンを利用した検索抽出を行なうことができます。
正規表現についてはここでは説明しませんので、専用サイト等をご覧下さい。 正規表現を使用する場合は、「検索キーワード」に正規表現のパターンを指定して下さい。
本システムにはワイルドカードによるLike検索等の機能がないのですが、正規表現によりこれらの要求は補完できると思います。
検索結果に前後の行も抽出
(検索オプション)
チェックを付けると検索キーワードがヒットした時にExcelシートにヒットした行の前後の行を含めて抽出されます。
モジュール(クラス単位)で罫線分割
(検索オプション)
出力されたExcelシート上では通常はファイル単位で罫線が引かれますが、ここにチェックを付けるとモジュール単位に罫線が引かれるように変更されます。
検索ファイル種別 検索ファイル種別は、Excelの拡張子による選択です。不要な拡張子があればチェックを外して下さい。
出力するExcelインスタンス指定 すでにExcelが起動されている場合にそのExcel上で本プログラムを動作させるか、 新規にExcelを起動してそのExcel上で本プログラムを動作させるかの指定です。
特に先に開いているワークブックに本プログラムで処理した情報を転用するということがなければデフォルトの「新規インスタンス」を指定して下さい。
但し、「新規インスタンス」を指定してもユーザー操作とのバッティングで異常終了することは発生します。
シート上の表示内容を列幅内で自動的に折り返す この指定にチェックを付けると、A4横で100%で印刷できる列幅で調整されてあふれる場合はセル内で自動改行されます。 チェックがない場合はセル内改行は行なわずに全体としてA4横に収まるように縮小されるようになっっています。
キーワード消去
(メニュー)
検索キーワードは検索抽出が終わっても自動的に消去されません。 これは誤植による検索を行なったような場合に後から指定した検索キーワードが確認できるようにするとともに、 検索キーワードの一部変更による再検索を容易に行なうための処置です。
従って、全く新たに検索キーワードを入力する場合は以前の検索キーワードは「邪魔」なわけですからメニューの「キーワード消去」で複数の指定があっても一括で消去できます。
システムタイトル削除
(メニュー)
「システムタイトル」「ルートフォルダ」「除外フォルダ」は本機能で繰り返し検索利用されることが多いため、 「システムタイトル」のプルダウンによりセットで再表示できるようになっていますが、 この「システムタイトル」はセットを認識するメインキーです。
一旦登録してキーワード検索を実施すると閉じた時に設定に追加登録されるわけですが、 この「システムタイトル」の文字列を後から変更すると新旧2つがプルダウンに表示されるという現象になります。
不要な「システムタイトル」が表示された場合はメニューの「システムタイトル削除」で削除することができます。

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

ExcelVBAキーワード使用一覧(処理結果)

本処理では検索抽出結果は新規作成のExcelワークシートに展開されて表示されます。
実行にあたってはExcelが編集中でないことや、ほかのマクロが動作中でないなどの必要があります。

Excelワークシート上には下記の項目(列)が表示されます。
項目 説明
(A) 一連番号です。
サブフォルダ名(B) ルートフォルダ配下のサブフォルダに属している場合にそのサブフォルダ部分が表示されます。
ファイル名(C) 検索抽出されたキーワードが属するファイル名(ブック名)が表示されます。
モジュール名(D) 検索抽出されたキーワードが属するモジュール名(クラス名)が表示されます。
(E) モジュール(クラス)の中の絶対行番号です。
行継続文字(_)で終わっている場合は次行が改行なく接続されて表示されるので 行継続改行付きの途中行については表示行番号と一致しない場合があります。
プロシージャ名(F) 検索抽出されたキーワードが属するプロシージャ名が表示されます。
モジュールレベルの名称・定数・変数などがヒットした場合は空欄になります。 また、「コメント行を抽出」にしている場合、プロシージャのタイトルのコメント記述はそのプロシージャの所有としては表示されません。
スコープ(G) 当該プロシージャ名のスコープが表示されます。
内容(H) 検索抽出されたキーワードが属する行の記述内容がそのまま表示されます。
行継続文字(_)で終わっている場合は次行が改行なく接続されて表示されます。 「前後の行も抽出」の指定がある場合は前後の行も改行で接続されて表示されます。

さらに検索に「ヒットしなかった」クラスやモジュールを探すこともできます。

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ビット版のみ対応)がインストールされていることが利用の前提条件となります。

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

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

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

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

バージョン情報

更新日 Ver 内容
2016/02/21 1.0.0.0 新規作成
2016/03/06 1.0.0.1 メニューのToolTipガイドを追加する対応
2016/05/14 1.0.1.0 タイトルリストが1件のみの時は起動時にそのタイトルを表示させるように対応
起動時のExcelチェックを廃止(Excel2013以降で動作不安定なため)
2016/05/15 1.0.1.1 最小化状態でフォーム位置を設定保存させない対応を追加
2016/05/30 1.0.2.0 単一フォルダ、単一ブック時でのシート列幅調整を追加
API宣言がプロシージャと判断されている件を修正
2016/05/31 1.0.2.1 Excelインスタンス指定を追加、Excelシートの列幅を調整
2016/06/12 1.0.2.2 「モジュールで罫線分割」の機能追加対応
各チェックボックス等にToolTipで機能説明を埋め込む対応
Excelの矩形貼り付け時のセル収容可能文字数上限を910文字に設定
条件付き書式の設定をExcelバージョンで限定(Excel2007以降のみ)
プリンタ非搭載PCでのPageSetup例外を回避する対応を追加
2016/07/09 1.0.2.3 マルチスクリーン時のフォーム制御の改善
2016/09/24 1.0.2.4 参照設定変更(MSVB for Application Extensibility 5.3MS.Vbe.Interop)
1.0.2.5 「モジュールで罫線分割」時の罫線状態を変更(ファイル部分と分割)
1.0.2.6 Excelオブジェクトの操作を実行時バインドから参照設定に変更する対応
2016/11/26 1.0.2.7 ワークシートの初期設定で条件付き書式をR1C1参照形式環境で行なう設定を追加
ページ設定の上下マージンを調整
2017/02/20 1.0.3.0 「シート上の表示内容を列幅内で自動的に折り返す」の指定機能を追加
2018/08/08 1.0.4.0 Excelのバイナリ形式ワークブック(*.xlsb)の対応を追加
2018/10/06 1.0.5.0 DPI環境で起動時フォーム位置がスクリーン領域外になってしまうことが発生する件の対応
2018/11/04 1.0.5.1 画面位置保持機能について複数画面時の個別DPI指定に対応する修正②
2021/10/15 1.0.5.3 開発環境を「Microsoft Visual Studio 2010」から「Microsoft Visual Studio 2019」に変更
2021/11/29 1.1.0.1 フレームワーク環境を「.NET Framework4.x」に変更
(ターゲットフレームワークは「.NET Framework4.5」に設定)
2022/05/14 1.1.0.3 ・開発環境を「Microsoft Visual Studio 2022」に変更
Windowsスタートメニューメンバの整理(概要説明リンクの削除⇒本体メニューから呼び出し可能)
2023/01/15 1.1.1.0 独自メッセージボックス変更(マウス既定ボタンモード対応)

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

ダウンロードはこちら。

←ExcelVBASearchKeywords_Setup.zip
      (1538KB)

VectorからもExcelVBAキーワード使用一覧」でダウンロードできます。


.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環境に移行した後の今後のバージョンアップについての設定内容は、自動的に引き継がれるようになります。