VBAのソースコードをGitで管理する方法
例えば ExcelVBA でちょっとしたマクロを作った場合、ソースコードのバージョン管理ができず、しかたなくファイルをコピーして丸ごとバックアップを取って … などという管理をしている人がいるのではないでしょうか。私がそうです。
いい加減 Git などでソース管理ができないと大変になってきたので方法を調べました。
調べてみると、VBAC
というのがあるみたいなので、これの使い方をまとめます。
VBAC
Excelファイル自体がテキストファイルではないので、VBAソースの差分を管理するということができません。VBAのエディターには、VBAのソースコードをファイルにインポート・エクスポートする機能が用意されています。これをコマンドから操作できるようにしたツールが VBAC
です。
テキストでVBAソースを管理できるのでこれをGitなどでバージョン管理します。
以下、製作者サイトの引用です。
いげ太の日記: Ariawase v0.6.0 解説(vbac 編)
GitHub – vbaidiot/Ariawase: Ariawase is free library for VBA cowboys.
vbac は、フリーの VBA ライブラリ Ariawase に同梱されるツールで、各種のマクロ有効 Office ファイルから VBA コードをエクスポートしたり、あるいは逆にインポートしたりするためのものです。VBA のソースコードを git などでバージョン管理するために、また Emacs や Vim や Sublime Text あるいはサクラエディタなどの任意のエディタで VBA を編集するために、さらに grep や diff のような外部コマンドとの連携を図るために使用できます。
VBACの環境構築
ExcelVBAを例に、使い方を見ていきます。
動作確認環境
一応以下の環境で動作を確認しました。
- Excel 2007 + Windows 10
- Excel 2010 + Windows 7
VBACのダウンロード
Releases · vbaidiot/Ariawase · GitHub
GitHubから最新リリースのソースをダウンロードします。解凍したフォルダのなかにある vbac.wsf
がソースのインポートエクスポートをしてくれる本体です。
フォルダ構成
作業用のフォルダを作成し、以下のような構成とします。
work
├── bin
│ └── ...
├── src
│ └── ...
├── vbac.wsf
└── .gitignore
binフォルダ
管理するマクロファイル本体を配置します。Book1.xlsmなど。
ExcelVBAの場合は、ワークシートの情報も必要となることがほとんどなので、全ファイルバージョン管理対象としておきましょう。
※VBAのソースコードのみの管理でよければ、バージョン管理対象外とします。
srcフォルダ
VBACによってbinに配置されたマクロから抽出されたVBAソースファイルが保存される場所。ここのファイルをバージョン管理することで、VBAの差分を管理することが可能になります。
VBAのセキュリティ設定
VBACを使うにあたって、VBAのセキュリティ設定が必要になります。
開発タブ -> マクロのセキュリティ
から セキュリティ設定の画面を開きます。
マクロの設定 -> VBAプロジェクトオブジェクトモデルへのアクセスを信頼する
をチェックします。
これで外部からVBAをインポート・エクスポートすることができるようになります。
VBACの使い方
ここまでで使う準備ができました。では、VBACのコマンドでソースのインポート・エクスポートを試します。適当なマクロファイル(ここでは Book1.xlsm)を用意し、binフォルダに配置してください。
コマンド実行の仕方
vbacのコマンドは次のようにして実行します。//nologo
を指定すると余計なロゴが出ずにすっきりします。[コマンド]
部分にvbacの任意のコマンドを指定し実行していきます。
cscript //nologo vbac.wsf [コマンド]
ソースのエクスポート
decombine
コマンドは、binフォルダ以下のファイルからVBAのソースコードをエクスポートしてくれます。
cscript //nologo vbac.wsf decombine
実行すると次のようにどのファイルを対象にしてどのようなファイルをエクスポートしたかが表示されます。この例だと、Book1.xlsm
ファイルを対象に Sheet1.dcm
ファイルと Module1.bas
ファイルがエクスポートされました。
cscript //nologo vbac.wsf decombine
begin decombine
> Target: Book1.xlsm
- Export: Sheet1.dcm
- Export: Module1.bas
end
エクスポートされたファイルの確認
エクスポートされたファイルは srcフォルダ以下にあります。ファイル名ごとにフォルダわけされています。エクスポートされたファイルはテキストファイルとして読めるので、任意のエディターで閲覧・編集が可能です。
ソースのインポート
combine
コマンドは、binフォルダ以下のファイルに対し、srcフォルダ以下のソースコードをインポートしてくれます。
src以下のファイルを適当に修正し、次のコマンドでただしくインポートされるか確認してみましょう。
cscript //nologo vbac.wsf combine
実行すると、エクスポート時と同様に対象ファイルが表示されます。
begin combine
> Target: Book1.xlsm
- Import: Module1.bas
- Import: Sheet1.dcm
end
binフォルダ以下のファイルを確認して、正しくVBAのソースコードがインポートされているか確認しましょう。
※ファイルを開いた状態でインポートはうまくいかないかもしれませんので閉じておきましょう。
git を使った管理手順
手順としては、pull
したら combine
をし、decombine
してから commmit
するという流れになります。
以上です。
コメントを書く