2014年3月3日月曜日

vbac Ver.0.6.0β の新規オプションを勝手に解説してみる

vbacの最新版 (version 0.6.0β) がFutureブランチに公開されたので、勝手に解説してみる。

【最初に】

vbac は「vbac is not VBA compiler 」の略で、Excel, Word, Accessファイルに含まれるVBAコードを解放するJScript製スクリプトです。(いげたさん作)

巷に出回っているエクスポート/インポートのためのVBAコードと異なり、スクリプト単体で動作するので、BATファイルを組むなり煮るなりすることで、他のアプリや処理と連携させ易いです。

VBAコードをバージョン管理したいVBA-erは、有無を言わずに、とりあえずつかおう。


vbacにできること


  • Excel, Word, AccessのファイルからVBAコードを一括エクスポート
  • Excel, Word, AccessのファイルにVBAコードを一括インポート

vbacの管理対象Ver.(推定)


  • 現存するMicrosoft Office全て
    • Microsoft Office 97 ~ 2013
    • Excel, Word, Access
    • 32bit/64bit 両対応

参考資料

VBAのソースコードを保守し易くするためのツール 
(公式資料がまだないので、当blogの過去記事をどうぞ)

【新たなオプション】

Ver.0.6.0βで追加されたオプションを以下に列挙してます。

/source:<dir>,/binary:<dir>

combine/decombine時に用いる、入出力フォルダを指定する。
/source は、VBAコードが配置されるフォルダを指定。
/binary は、Excel, Word, Accessのファイルか配置されるフォルダを指定。

デフォルト(未指定)の場合は、
sourceが、vbac直下の「src」フォルダ
binaryが、vbac直下の「bin」フォルダです。

<dir>は、絶対パス、もしくは、相対パスで指定する。
相対パスの場合、vbacの配置フォルダが起点となる。

オプション(/source or /bainary)と、オプションの値(<dir>)は、
半角コロン(:)のほか、半角イコール(=)や半角スペースで区切ってもOKです。

/compact

Acccessファイルのcombine/decombine時に、DAO.DBEngine.を用いて、Accessデータベースを最適化する。

内部実装に関して

最適化に用いる DAO.DBEngineのVer.は、以下の優先順位で決定される。

  1. DAO.DBEngine.120
  2. DAO.DBEngine.36
  3. DAO.DBEngine.35


最適化の具体的な内容については、vbacが内部で呼び出している以下のメソッドを参照。
DBEngine.CompactDatabase メソッド (DAO)

/vbaproj

decombine時、プロジェクトの参照設定を App.vbaproj ファイルに書き出す。
combine時、App.vbaproj ファイルから、プロジェクトの参照設定を復元する。

Windows8 64bitの環境ではbuggyらしいので、
腕に自信のある方は、fixしてcommitすると喜ばれるのではないでしょうか。(他力本願)

※ Ver.0.3.0ではデフォルトで有効。Ver.0.5.0ではデフォルトで無効。