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ファイル(ユーザーフォーム)も対応可能。