#目的
- エクセルアドインを開発するいい感じの手順を見つける
(つまり、Vimで編集して、バージョン管理する)
#背景
Vimexcel1を使い始めて、いくつか修正もしたりして、思った。
- Vimで編集したい
- Git管理したい
vbac(vbaidiot/Ariawase) - GitHubという便利そうなものがある。
#参考
- Ariawase v0.6.0 解説(vbac 編) - いげ太の日記(作者さん自らの解説)
- ExcelにはVBAがある! - アスタミューゼ
- vbacでエクセルVBAのソースコードをGitバージョン管理する方法 - いつも隣にITのお仕事
- VBAのソースコードを保守し易くするためのツール vbac - ClockAhead 開発Blog
#作業手順
##開発環境を構築する
###vbacを入手する
vbac(vbaidiot/Ariawase) - GitHubから。
###フォルダ構成を決める
vbacの基本構成をベースに、以下のようにした。
MyAddin/
.gitignore
vbac.wsf
bin/ (吸出し用。Git管理外)
*.xla (吸出し用。Git管理外)
src/
(template/) (シートにも意味がある場合、元ファイルを置く)(この例では作らない)
(*.xla)
###フォルダ構成を作る
-
フォルダを作る
mkdir MyAddin
cd MyAddin
git init
mkdir bin src
1. ファイルをMyAddin/に置く
vbac.wsf
アドイン
(アドインへvbacからアクセスできるようにしておくのを忘れずに。)
(手順は参考URLを参照)(ファイルごとの設定ではないので、環境で一度やればOK)
1. .gitignoreを作る
```gitignore
bin/
###マクロを吸い出す
-
vbacを実行し、マクロを吸い出す
実行コマンド:cscript //nologo vbac.wsf decombine
実行後のフォルダ構成:MyAddin/ bin/ エクセルアドイン(例:myaddin.xla) src/ myaddin.xla/ macro1.cls macro2.bas
1. とりあえずコミット
`git commit -a -m "AHAHA...! MyAddin was version controled!"`
##開発する
快適な編集体験(今回の目的の一つ)のために、Vimで編集する。
1. (リモートリポジトリがある場合)ローカルを最新化
`git pull`
1. マクロを編集する
Vimで編集する(`vim macro2.bas`)
1. マクロをアドインに反映して動作確認する
`cscript //nologo vbac.wsf combine`
1. 修正が満足のいくものでなければ、再編集。
1. 動作確認をパスしたら変更をコミットする
`git commit -a -m "comment"`
###フォームが含まれる場合の注意点
フォームは、エクスポートすると「\*.frm」「\*.frx」という2つのファイルになる。
frmは、フォームのイベント処理コードなどを保持するテキストファイル。
frxは、フォームコントロールの位置などを保持する**バイナリファイル!!**
このバイナリは、エクスポートするたびに差分が出る。
インポート時に読み込まれるので、管理から外すわけにはいかない。
割り切ってすべてコミットしてしまうか、変更したときだけコミットするか。
##デプロイ
ここでいうデプロイとは、自環境のアドイン置き場のアドインを更新すること。
アドイン置き場には、いくつかあり、エクセル起動中の操作に違いがある。
###C:\Program Files\Microsoft Office\Office14\Library
ここに置くの推奨。("Office14"は、Excelのバージョンによって変わる)
####特性
* VBA Editorで編集できるが保存できない。(読み取り専用と怒られる)
* エクスプローラでファイル操作ができる。
####手順
1. MyAddin/bin/myaddin.xlaをアドイン置き場に置く(上書き)
1. アドインを読み直す(エクセルを開き直してもよい)
1. [開発]-[アドイン]ダイアログでアドインのチェックを外してOK
2. [開発]-[アドイン]ダイアログでアドインのチェックを入れてOK
#補足
##開発する(のVBA Editor版)
メリット:すぐにマクロを試せる
パラメータの微調整などtry-and-errorになることがわかりきっている場合やVimがない場合。
1. (リモートリポジトリがある場合)ローカルを最新化
`git pull`
1. ソースをマクロに反映する
`cscript //nologo vbac.wsf combine`
1. マクロを編集、動作確認する
エクセルを開いてAlt+F11
1. マクロを吸い出してコミット
`cscript //nologo vbac.wsf decombine`
`git commit -a -m "comment"`
##デプロイする(の別の場所)
###%USERPROFILE%\AppData\Roaming\Microsoft\AddIns
####特性
* VBA Editorで編集と保存ができる。
* エクスプローラでファイル操作(上書きコピー、削除など)ができない。(開いているので無理と怒られる)
####手順
1. エクセルを閉じる
1. MyAddin/bin/myaddin.xlaをアドイン置き場に置く
-
エクセルをvim風に操作できる素晴らしいエクセルプラグイン。キーマッピングも変えられるし、機能追加もできる。(要ソース修正) ↩