ECモールの商品データなどでCSVファイルを扱うとき、商品情報の一括編集などでExcelVBAを使うことが多いはずだ。

これまで編集用のファイルはVBAプロジェクト「*.xlsm」とし、こちらで編集したファイルをExcelで開いたCSVファイルに貼り付けていたのだが、編集用ファイルとCSVファイルを分けて管理するのが面倒だったので、編集用ファイルを無くすことにした。

とはいえ、拡張子「.csv」のファイルにVBAモジュールを保存することはできない。

そこで、VBAモジュールを「.bas」ファイルにエクスポートし、必要に応じてbasファイルをインポートして運用する方式に変えてみた。

運用形態

  1. 商品カテゴリ別にCSVファイルを分ける
  2. すべてのCSVファイルに対し共通で使うVBAモジュールをbasファイルとして管理
  3. VBAコードを実行する場合は、ExcelでCSVを開き、共通basファイルをVBEでインポートして使う

これで、管理用xlsmファイルを持たなくてよくなったので、管理しやすくなるはずだ。

VBAモジュールのエクスポート

ExcelでVBEを開き、プロジェクトツリーから対象のモジュールを右クリックし「ファイルのエクスポート」を選択する。

保存ダイアログが表れるので、保存先を指定して拡張子「.bas」として保存する。

モジュールをエクスポートしておけば、CSVファイルを閉じてもプログラムは再利用可能だ。

VBAモジュールのインポート

ExcelでCSVファイルを開き、プロジェクトツリーの空欄部分を右クリックし「ファイルのインポート」を選択する。

対象のbasファイルをインポートすると、ツリーにモジュールが表れ、先程エクスポートしたプログラムを開いたCSVファイルに対し実行することができる。

Excel VBAは長く使ってきたが、basファイルとしてモジュールを管理する手法は最近知った。
basファイルはVBEだけでなく、好みのエディタでも編集することができるので、コーディングも捗りそうだ。