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