ExcelのVBAもGitでバージョン管理していこう

VBAもGitでバージョン管理して分散型にしよう

 

基本、Excelで作成したVBAはExcelファイルがバイナリのため、ファイル自体をGitで差分管理をすることは難しいです。これまで、ExcelのVBAをコード差分管理するためにはひとつひとつのモジュールをテキスト形式にコピー、または、ファイルのインポート/エクスポート機能を使用しての書き出しなどをして、別にテキストファイル形式として保存していくなどの手間のかかる作業が標準であったかと思います。

ですが、下記ブログで紹介されている『vbac』というツールを使えば、バイナリファイル(.xlsm)に含まれるVBAコードをテキストエディタで編集できる形式に一括で書き出すことが可能です。

こちらのツールを使用して、ExcelのVBAコードも簡単にGitでバージョン管理をしていく事を検討してみましょう。

 

 


vbacとは?

 

冒頭でも述べさせていただきましたが、Excelなどで作ったバイナリファイル(例:.xlsm)のVBAコードを、テキストエディタで編集できる形式に一括で書き出すことができるツールとなります。

詳細な説明はvbacの作者様:いげ太様 のサイトより引用させていただきますのでご覧くださればと思います。

vbac は、フリーの VBA ライブラリ Ariawase に同梱されるツールで、各種のマクロ有効 Office ファイルから VBA コードをエクスポートしたり、あるいは逆にインポートしたりするためのものです。VBA のソースコードを git などでバージョン管理するために、また Emacs や Vim や Sublime Text あるいはサクラエディタなどの任意のエディタで VBA を編集するために、さらに grep や diff のような外部コマンドとの連携を図るために使用できます。本ツールは、Word ファイル(doc、dot、docm、dotm)、Excel ファイル(xls、xla、xlt、xlsm、xlam、xltm)、Access ファイル(mdb、accdb)に対応しています。

vbacの使い方

vbacの詳細な使い方は作者のいげ太様が説明をされておりますので、私からは簡易的に実行手順のみの説明をさせていただきます。

 

1. まずはExcel側のセキュリティ設定からです。エクセルを起動し、『開発』→『マクロのセキュリティ』→『セキュリティセンター』→『マクロの設定』で「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェックを入れてください。

 

2. vbacのツールはこちらのGithubでオープンソースとして配布されておりますので、下記にアクセスして「clone or download」よりzipファイルをダウンロードします。

 

3. 上記でダウンロードしたzipファイルを解凍し、《vbas.wsf》というファイルがあるのを確認したら、任意のフォルダを作成し、その作成した作業フォルダ内に《vbas.wsf》を移動させます。《vbac.wsf》ファイルが置かれた作業フォルダ内に《bin》フォルダを作成し、その中にコードを書き出ししたいファイル《.xlsm》を置いておきます。

 

 

4. コマンドプロンプトを開き、cdコマンドで作業フォルダに移動をしてから《vbac.wsf》をdecombineオプションで実行します。(以下のコマンドを参照してください。)

 

cdコマンド例 cd C:\Users\<ユーザー名>\Desktop\vbac(作業フォルダパス)

cscript vbac.wsf decombine

 

5. 上記のスクリプトを実行すると、作業フォルダ内に『src』フォルダが作られ、そのフォルダ内に《.xlsm》フォルダと、作成したClass1クラスモジュール(例:Class1.cls)、Module1標準モジュール(例:Module1.bas)、Sheet1シートモジュール(例:Sheet1.cls)のテキストファイルが出来上がります。

あとはそのモジュールのテキストファイルをGitで差分管理をしていき、リポジトリへとコミットすることができるでしょう。

 

 

以上がvbacの使い方の説明になります。不明点などありましたらご連絡をいただければと思います。

 

 


まとめ

 

vbacの説明をしてきましたが、Git管理するVBAソースコードがオープンにコミットしてもいい場合、リモートリポジトリはGithubが使いやすくてお勧めです。嫌な場合、プライベートリポジトリが無料で取得できるBitbucketが良いかと思います。物によって使い分けをしましょう。

私もこちらのvbacツールを使って、さっそくGitクライアントのSourceTreeでxlsmファイルのVBAをGit管理後、Bitbucketsのリモートリポジトリにコミットしてみました。応用すればxlsmファイルをGitでバージョン管理ができるようになり、色々と便利に使わせていただいております。

複数人で同じコードを作業する場合や、過去の差分を参照しながら進めたい場合などにはとても有効なGit管理です。ExcelのVBAを使用している方はGitの導入を検討してみてはいかがでしょうか?

 

2019/01/23 追記

Githubでも無料アカウントでプライベートリポジトリが利用できるようになりました。最大3人までのコラボレータと作業共同が可能です。ますます使いやすく利便性の高まるGithubの導入を検討しましょう。