Excel VBAの管理方法2
前回記事のパターン2. basファイルをベースに管理し、実行時にxlsm化する方法(VBComponents.Import)について説明する。 art-of-lives.hatenablog.com
所定の場所のbasファイルを取り込んだ、新しいブックを作るVBAコードはこのようになる。
Private Function Import_bas() Const FilePath As String = "example.bas" Workbooks.Add.VBProject.VBComponents.Import FilePath End Function
最もシンプルな使い方としては、この短いコードをあらかじめ記述したExcelブック(以下取り込み用Excel)と実際に使用したいbasファイルをセットでgithubに上げておく。
VBAのコード管理はbasファイルで行うとgithubで管理しやすく、最新のコードを各人各フォルダでbasからExcelに展開して使う事ができる。
githubがない環境でも、共有フォルダなど特定の場所にbasファイルを置き(この場合は相対パスではなく絶対パスを記述)、この取り込み用Excelで展開することでコードの管理が楽になると思われる。
以下メモ
FilePathにはファイル名しか記述していない。これは相対パスにすることで取り込み用Excelと同じフォルダの中しか取り込み対象としない。絶対パスでも問題ないが、basファイルの場所が変わると取り込み用Excelのコードも修正する必要がある。
取り込み用Excelは起動するだけで自動実行されるようにしておくとと楽。または同様のVBScriptを作っておき、クリックするだけで実行されるようにしてもよい。
basファイルに
Attribute VB_Name = "SampleModuleName"
と記述しておくとその名前でExcelに登録される。何も書かなければModule1かその連番となる。Workbooks.Add
は新規に作成されたWorkbookオブジェクトである。これによりbasファイルが取り込まれただけの新しいブックが作成される。なお、この部分を置き換えることで、basファイルのインポート先を既存のワークブックにすることもできる。- basファイルはVBAでいう標準モジュールであり、他にもclsファイル(クラスモジュール)やfrmファイル(ユーザーフォーム)も対応可能。