kazurayam / vba-callgraph

Generating a Call Graph for Excel VBA workbooks
https://kazurayam.github.io/VBACallGraph/
Apache License 2.0
0 stars 0 forks source link

WorkbookのID, xlsmファイルのファイル名, VBProjectのname --- 似たようなものが複数あって何が何だかわからない、整理せよ #26

Closed kazurayam closed 2 months ago

kazurayam commented 3 months ago

Excelワークブックひとつひとつを一意に識別するための情報が必要だ。VBAProcedureUsageAnalyzerプロジェクトのv0.1.10 ではSensibleWorkbookクラスにIdプロパティを設けている。Idプロパティの値はSensibleWorkbookクラスのコンストラクタへの引数として外部から与えることを要求する。

ところがExcelワークブックにはそもそもファイル名がある。どうしてファイル名を使わずに、SensibleWorkbookクラスのコンストラクタに文字列を別途指定しなければならないのか?

.xlsmファイルを開いてVB Editorを開けば、VBProjectのNameプロパティがあって、それが必ず一意であると思われる。VBProjectのNameプロパティを識別情報として使えばいいんじゃないのか?

VBProjectのNameをxlsmファイルから取り出す方法を調べよ。そうすれば一本化できる。

kazurayam commented 2 months ago

aoganのkazurayam-vba-libプロジェクトで修正をした。

この修正を7つのExcelファイルすべてに反映し、aoganの3つのGitHubレポジトリに変更をコミットした。

この変更に対応すべくkazurayam/VBAProcedureUsageAnalyzerプロジェクトを修正しよう。

kazurayam commented 2 months ago

v0.1.16 で対処した。

  1. 入力となるExcelワークブックにExportedModulesワークシートがあって列AにProject名がある、そこにVBProjectの値が読み出されている
  2. IndexerクラスがSensibleWorkbookオブジェクトを構成するとき、ExportedModulesワークシートのセルA2セルからプロジェクト名を読み出し、SensibleWorkbookオブジェクトのidプロパティのデフォルト値として採用する。
  3. ただしSensibleWorkbookクラスにid(String)メソッドがあって、任意の文字列を設定できる。もしもVBProjectの名前がイマイチならば、好みのStringを指定してSensible Workbookのidとして指定することができる。

xlsmファイルのファイル名は参照しない。いろいろな人がいろいろの事情でいろいろのファイル名をつけたくなるのが普通である。個人や組織の名前や日付を含んだ漢字カナ混じりの長い名前になる場合がある。Excelワークブックのファイル名がVBAProcedureUsageAnalyzerの内部処理に食い込んでくるのは避けたい。

kazurayam commented 2 months ago

v0.1.16 の lib/src/test/java/com/kazurayam/vba/puml/FindUsageAppGrandTest.java が下記のdiagramを生成した。

test_writeDiagram_Options_KAZURAYAM.puml

test_writeDiagram_Options_KAZURAYAM

test_writeDiagram_Options_KAZURAYAM-poster.pdf

kazurayam commented 2 months ago

poster.pdfをA3の紙4枚に印刷してこよう。コンビニのプリンターで。

紙に印刷した成果物が満足いくものであれば、このVBAProcedureUsageAnalyzerプロジェクトにひと区切りつけてReleaseしよう。

プロジェクト名をキャッチーな名前に変えたいなあ。B'zのUltra Soulみたいな。