この記事は、「Excel VBA Advent Calendar 2017」の10日目の記事です。 時間なくて過去記事でごめんなさい。。。
5年ぶり?、10年ぶり?くらいにExcelVBAでの開発案件がありそうなので事前にできるだけモダンな開発環境を構築してみようと思います。
通常VBAはExcel等のソフト内のエディタ(VBE)で開発し、モジュールの共有化やバージョン管理が難しい開発環境です。そのため今回は、VBE以外の外部エディタを利用したり、GitHubでバージョン管理や差分抽出ができる開発環境を構築できたらと思っています。
ツールについて自分で構築するか、既に良いツールがないか色々と探していたのですが、「text-scripting-vba」というツールが便利そうなので試してみました。詳細についてはText Scripting on VBAに記載されています。
まずはじめに、Excelのオプションをからセキュリティセンターの設定を選択してVBAのアクセスを信頼するにチェックします。
次に、「text-scripting-vba」からツールをダウンロードして任意のディレクトリに展開します。
展開が終わったら、Excelファイルを新規作成します。そしてVBEを開き、「ThisWorkbook」に「ThisWorkbook.cls」のコードをコピーします。
コピーが終わったら、Excelファイルをxlsm形式で保存して閉じます。今回はsample.xlsmとしました。
sample.xlsmをもう一度開いて、入っているサンプルのマクロ「dispOS」を確認できると、外部ファイルの自動読み込みが成功しています。マクロを実行してみます。
ツールが動いているのを確認できたので、次に外部ファイルを更新してExcelに反映してみます。エディタは、Visual Studio Codeを利用してみます。コメントに「だよ!!」を足して上書き保存してみます。
次に、外部ファイルの更新をExcelに反映するために、マクロ「ThisWorkbook.reloadModule」を実行します。
実行したら次に、マクロ「dispOS」をもう一度実行します。外部ファイルに追加したコメントが反映されているのを確認できました。
実際のコードも確認してみます。Excel内のモジュールのコードも更新されていることを確認できました。
読み込む外部ファイルは、「libdef.txt」でパスを設定します。
'main
./main.bas
'modules
./modSample.bas
今までVBAはExcel等のソフト内のエディタ(VBE)で開発していくスタイルでしたが、モジュールを外部ファイルで管理することでGitHubでのバージョン管理や差分抽出など汎用性が高くなります。新しい開発環境にしたことで開発しやすくなりそうです。
VBAについて、他にも記事を書いています。よろしければぜひ。
tags - VBA