RubberduckでVBAプログラムをGit管理する
サムネイルはRubberduckのホームページのものを引用しています。
この記事で伝えたいこと & この記事で言っていないこと
- 伝えたいこと
- Rubberduckを使うことで比較的簡単にVBAプログラムのバージョン管理を行えます
- 言っていないこと
- 全てのVBAプログラマにとって、Rubberduckを使うことが最善手です
- VBAとVBEは令和の時代でも十分使えます
そもそもRubberduckで何ができるのか
この辺りの内容は色々な方がまとめているので省略します。
Gitで管理する具体的な方法
次のように、エクセルファイルとVBAプログラムの格納先のフォルダ(src
)を用意してみます。
/root
┣ hoge.xlsm
┗ /src
hoge.xlsm
を開いて、rubberduck
のタブからExport Active Project
を選択します。
続いて現れるフォルダ選択ウィンドウで、先ほど用意したsrc
フォルダを選択します。
これだけで、src
フォルダにはモジュール名に対応したModule1.bas
が出力されます1。また、例えばVSCodeでも次のように開けます。
Gitを使い慣れている方はもうお分かりだと思うのですが、ここで出力されたファイルがVBAのソースファイルなので、後は 焼くなり煮るなり git tag
コマンドで、適当なタイミングでプログラムのバージョン管理を行える、という訳ですね。
また、例えば次のような流れでVBA側のコードを変更することも可能です。
- VSCode側で
bas
ファイルを編集 - VBE側で変更後のファイルをインポート(というより同期)する
具体的に、以下の様にVSCode側でプログラムを編集します。
具体的には以下の部分を追加しました。
Dim helloWorld As String: helloWorld = "hello, World!"
Debug.Print helloWorld
その後、VBE側でRubberduck
の専用機能である、Code Explorer
のタブでSync Project
-> Update Components from files...
を選択します。
ファイルの選択ウィンドウが現れるので、同期させたいファイルを選択します(もちろん複数選択も可能です)。
最終的にVBE側でModule1
モジュールを開いてみると、次の様に変更箇所がアップデートされていることが分かります。
上記ができることで嬉しいこと
単にバージョン管理を簡単化するだけでなく、他にも以下のようなメリットがあると思います。
- 複数人で異なるVBAプログラムをGit管理していても変更箇所だけをアップデート可能
- 別のプロジェクトで使われている機能をモジュール単位などで追加したり管理することが可能
上記でちょっと面倒な所
- Git側で管理した変更点が自動的に反映されない
- 変更してから必ず Export -> add & commit & push -> (変更反映する際は) -> Sync Project の手続きが必須
Dim まとめ As 蛇足
VBAとVBEは、お世辞にも令和の時代に人に勧められるものではないですが、残念ながら未だに様々な場面で使われています。保守・管理の面からしてもこれらを扱うのはハイパーしんどいですが、
- 少しでもモダンな技術で管理しやすくする
- 別の言語・フレームワークへ移行するまでの機能の検証
などのためにRubberduckを導入しない理由はあまり無いように思います。
また、以下の理由からRubberduckが古の クソ of クソ システムにとっての救世主になるのではないかと思います。
- 洗練された機能
- インストールに管理者権限を必要とせず、比較的どのような環境でも動く
- (英語ではあるが)ドキュメントが豊富
- 開発が活発で、長期的な開発も予定されている2
個人的にはRubberduckがVBAプログラム開発のデファクトスタンダードになってほしいな~と思って金銭的な支援もしました。