Excel VBAのステップ数を数えるツールを探そうとおもったけれども、勉強のために自作してみる。

ステップ数を数える方法について

ソースコードから以下の情報を得たい。

  • 全体のステップ数
  • 実行ステップ数
  • コメント行
  • 空白行

こんな出力結果を得たい。

--------------------------
  FileName    Exxecute
--------------------------
 hogehoge.cls       10
 hugahuga.bas       10
--------------------------
 Sum                20
--------------------------

サンプルを探してみた。以下のサイトのコードが良さそうだ。

テンプレートエンジンをつかってみる

テンプレートエンジンとは、データとテンプレートからドキュメントを作成するもの。

VBAで利用できるテンプレートエンジンは、「Mini Templator」が唯一の選択肢のようだ。

Mini Templatorについて

Mini TemplatorはHTML用のテンプレートエンジン。 VBAだけではなくて、Java, PHPでもつかえる模様。オープンソース。

上記サイトからVBA用のファイル一式をダウンロード。 なかにあるMiniTemplator.clsをインポートする。

ドキュメントは以下。

Mini Templatorのつかいかた

キホンは以下の4ステップ

  1. テンプレートエンジン生成
 Dim templator As New MiniTemplator
  1. テンプレート読み込み
templator.ReadTemplateFromFile STEPCOUNTE_TEMPLATE_PATH
  1. データ入力

3.1 変数代入 3.2 ブロック代入

templator.SetVariable "filename", vbcComp.Name
templator.SetVariable "execute", vbcLine
templator.SetBlock "file"
  1. データを文字列 or ファイルに出力
Debug.Print templator.GenerateOutputToString

テンプレートを用意

こんな感じでテンプレート用意。

-------------------------
 FileName}    Execute
-------------------------
<!-- $BeginBlock file --> ${filename}    ${execute}


<!-- $EndBlock file -->-------------------------


<!-- $BeginBlock sum --> Sum    ${execute}


<!-- $EndBlock sum -->-------------------------

コード

2021.12.追記. コードなくなりました.

出力結果

-----------------------
 FileName      Execute 
-----------------------
 ThisWorkbook       39 
 Sheet2              0 
 Calc                3 
 Calc_spec          11 
 FileManager_spec   47 
 InlineRunner      112 
 MiniTemplator     608 
 mdlPrintF         282 
 SpecDefinition     62 
 SpecExpectation   164 
 SpecRunner          4 
 SpecSuite          42 
 StepCounter        51 
 FileManager       129 
-----------------------
 Sum              1554 
-----------------------

Special Thanks