3
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

エクセルアドインをバージョン管理する

Last updated at Posted at 2017-07-12

#目的

  • エクセルアドインを開発するいい感じの手順を見つける
    (つまり、Vimで編集して、バージョン管理する)

#背景
Vimexcel1を使い始めて、いくつか修正もしたりして、思った。

  • Vimで編集したい
  • Git管理したい

vbac(vbaidiot/Ariawase) - GitHubという便利そうなものがある。

#参考

#作業手順
##開発環境を構築する
###vbacを入手する
vbac(vbaidiot/Ariawase) - GitHubから。
###フォルダ構成を決める
vbacの基本構成をベースに、以下のようにした。

MyAddin/
    .gitignore

    vbac.wsf

    bin/ (吸出し用。Git管理外)
        *.xla (吸出し用。Git管理外)

    src/

    (template/) (シートにも意味がある場合、元ファイルを置く)(この例では作らない)
        (*.xla)

###フォルダ構成を作る

  1. フォルダを作る

mkdir MyAddin
cd MyAddin
git init
mkdir bin src


1. ファイルをMyAddin/に置く
vbac.wsf
アドイン
(アドインへvbacからアクセスできるようにしておくのを忘れずに。)
(手順は参考URLを参照)(ファイルごとの設定ではないので、環境で一度やればOK)

1. .gitignoreを作る  

    ```gitignore
bin/

###マクロを吸い出す

  1. 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をアドイン置き場に置く  
  1. エクセルをvim風に操作できる素晴らしいエクセルプラグイン。キーマッピングも変えられるし、機能追加もできる。(要ソース修正)

3
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?