問題点
業務でVBAを使うことがたまにありますが、Excelとか、Accessとかバイナリの中に組み込まれていて、Diffをとったりマージしたりが大変です。手作業でExportしてGitに入れてとかやったりもできますが、非常に面倒です。
ツール
そんな問題を解決するツールを見つけました。Excel、Word、Accessに対応していて、非常に便利だったので紹介しておきます。
いげ太さんが作成されたものですが、かなり秀逸です。
ダウンロード
Gitで公開されていますので、こちらからダウンロードしてください。
ダウンロードしたファイルの中に、vbca.wsfというファイルがありますので、今回はこれを使います。
事前準備
Excelはセキュリティの設定を少し変更する必要があります。
セキュリティセンタから「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」をチェックしておいてください。
使い方
作業はコマンドプロンプト上でやるんですが、vbac.wsf をおいて、同じフォルダにbinフォルダを作成。
そこに、対象となるVBA入りのExcelファイル等を置きます。
分割
>cscript vbac.wsf decombine
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.
begin decombine
> Target: sample.xlsm
- Export: Sheet1.dcm
- Export: Module1.bas
- Export: Class1.cls
- Export: UserForm1.frm
- Export: UserForm1.frx
end
srcというディレクトリが作成され、そこにモジュールが出力されました。
無事フォームも出力されています。
シートの内容等は出力されないため、シート本体も保存は必要です。
統合
>cscript vbac.wsf combine
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.
begin combine
> Target: sample.xlsm
- Import: Class1.cls
- Import: Module1.bas
- Import: Sheet1.dcm
- Import: UserForm1.frm
- Import: UserForm1.frx
end
おわりに
現在の現場ではEUCツールという大量のバージョン管理されていないExcel、Accessが存在します。
いつかGitにのせて並行開発もできるようにしてあげようと思います。