みなさん、こんにちは!
そろそろチームプレイも試したいタカハシ(@ntakahashi0505)です。
以前これらの記事で非エンジニアのための初心者向けGitバージョン管理や、Gitバージョン管理に便利なSource Treeの使い方についてお伝えしてきました。
ただね、エクセルVBA。
xlsmファイルはテキストファイルではありませんので、せっかくバージョン管理をしていてもGitのdiffコマンドで差分をとることができません。
例えば、大き目のプログラムになっちゃったときや、複数人で分散して開発するときなどは、更新内容をxlsmファイルを開いて確認しなくてはいけないのでとても不便です。
今回は、その悩みを解決すべく、vbacというツールを使ってエクセルVBAのソースコードをテキストでインポート・エクスポートする方法についてお伝えします。
これでエクセルVBAもいい感じでGitバージョン管理できるというもの…では、いってみましょう!
vbacとは?
まず、VBEの機能として「ファイル」→「エクスポート/インポート」で、VBAプログラムをテキストファイルに吐き出すことは可能です。
なのですが、モジュールごとに選択して実行をしなくてはいけないので、面倒です。
それで別の方法として、vbacというツールを使う方法があります。
vbacはVBAプログラムをコマンドラインの操作でテキストファイル形式でインポート・エクスポートできるツールです。
実はエクセルVBA以外にも、WordVBA、AccessVBAにも対応している超優れものです。
詳しくは作者のいげ太さんのページをご覧いただければと思います。
vbacの使い方
では、早速vbacのダウンロードや使い方を説明していきますね。
マクロのセキュリティ設定
とその前に、最初にマクロのセキュリティ設定をしておく必要があるので、先にやってしまいましょう。
エクセルのリボンから「開発」→「マクロのセキュリティ」を選択します。
「セキュリティセンター」というウィンドウが開きますので、「マクロの設定」で「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェックを入れて「OK」としてください。
何だか舌を噛みそうですが、ひとまずこれでエクセル側の設定はできました。
vbacをダウンロード
次にvbacをダウンロードします。
以下、GitHubページにアクセスをします。
Ariawaseという素敵なネーミングになりますが、ダウンロードします。
ダウンロードしたzipファイルを解凍します。その中のvbac.wsfというファイルが目的のブツになります。
vbacを使用するためのフォルダ構成
次にvbacを使えるようにフォルダを構成していきます。
作業フォルダの配下にbinというフォルダを作成し、その同階層にvbac.wsfを配置します。
今回は「vba-ie」というフォルダを作業フォルダとしました。
binフォルダの中に操作をしたいxlsmファイルを置きます。今回は、vba-ie.xlsmというファイルです。
フォルダ構成はこのようになります。
- vba-ieフォルダ
- binフォルダ
- vba-ie.xlsm
- vbac.wsf
これでvbacコマンドを使う準備は全て完了です。
vbacコマンドを実行する
ではコマンドプロンプトを開いてvbacを実行して、xlsmファイルからソースコードをエクスポートしてみましょう。
vbacはWindows Script Fileという形式のスクリプトで書かれていまして、コマンドプロンプトのcscriptコマンドで実行することができます。
cdコマンドで作業フォルダに移動をしてから、以下コマンドでvbacを実行します。
[sh]
cscript vbac.wsf decombine
[/sh]
あっという間に実行完了!
エクスポートされたテキストファイルを確認する
作業フォルダvba-ieの中身を覗いてみますと、srcというフォルダが自動で生成されています。
その中に「vba-ie.xlsm」というフォルダ、さらにその中に「Module1.bas」というファイルが生成されています。
このModule1.basがエクスポートしたテキストファイルになります。
テキストエディタで開いてみると
このようにバッチリ閲覧と編集が可能です。
vbacを使用してエクセルVBAをGitバージョン管理する
では、エクセルVBAについてvbacを活用しつつのGitバージョン管理をしてみましょう。
Gitバージョン管理のツールとしてお馴染みのSource Treeを使います。
vbacで構成した作業フォルダをリポジトリとしてコミット
では、まずSource Treeでvba-ieを作業フォルダとして設定してリポジトリ作成します。
Module1.basがエクスポートされている状態ですから
- binフォルダ内のvba-ie.xlsm
- srcフォルダ内のModule1.bas
- vbac.wsf
がステージされますので、コミットします。
うーん、コミットするとスッキリしますよね~。
GitでエクセルVBAのソースコードの差分を見る
次にエクセルVBAにプログラムの変更を行いまして、再度vbacコマンド
[sh]
cscript vbac.wsf decombine
[/sh]
でエクスポートをしました。
この時点でのModule1.basは以下のようになっていて、赤枠の部分が新たに追加したソースです。
Souce Treeでこの追加についてのコミットを行います。
当然ですが、ちゃんと直前のバージョンとのdiff(差分)がとれていますね。
これでバッチリGitバージョン管理ができます。
vbacによるソースコードのインポート
エクスポートについて説明してきましたが、vbacによるソースコードのインポートについて簡単に触れておきます。
フォルダ構成については、エクスポートと同じ状態にして
[sh]
cscript vbac.wsf combine
[/sh]
というコマンドでsrcフォルダ内のソースをバッチリインポートすることができます。
複数人で作業分担をしているときなどは、combineも活用をしながら作業を進めればOKです。
まとめ
vbacによるエクセルVBAのソースコードのエクスポートとインポートについてお伝えしました。
これで、エクセルVBAの開発もソースコードの差分を見たり、競合箇所を発見したり、複数人で分担して作業をしたりがとっても楽になりますね。
ぜひご活用下さい!
コメント
[…] vbacでエクセルVBAのソースコードをGitバージョン管理する方法 […]