ECモールの商品データなどでCSVファイルを扱うとき、商品情報の一括編集などでExcelVBAを使うことが多いはずだ。
これまで編集用のファイルはVBAプロジェクト「*.xlsm」とし、こちらで編集したファイルをExcelで開いたCSVファイルに貼り付けていたのだが、編集用ファイルとCSVファイルを分けて管理するのが面倒だったので、編集用ファイルを無くすことにした。
とはいえ、拡張子「.csv」のファイルにVBAモジュールを保存することはできない。
そこで、VBAモジュールを「.bas」ファイルにエクスポートし、必要に応じてbasファイルをインポートして運用する方式に変えてみた。
運用形態
- 商品カテゴリ別にCSVファイルを分ける
- すべてのCSVファイルに対し共通で使うVBAモジュールをbasファイルとして管理
- VBAコードを実行する場合は、ExcelでCSVを開き、共通basファイルをVBEでインポートして使う
これで、管理用xlsmファイルを持たなくてよくなったので、管理しやすくなるはずだ。
VBAモジュールのエクスポート
ExcelでVBEを開き、プロジェクトツリーから対象のモジュールを右クリックし「ファイルのエクスポート」を選択する。
保存ダイアログが表れるので、保存先を指定して拡張子「.bas」として保存する。
モジュールをエクスポートしておけば、CSVファイルを閉じてもプログラムは再利用可能だ。
VBAモジュールのインポート
ExcelでCSVファイルを開き、プロジェクトツリーの空欄部分を右クリックし「ファイルのインポート」を選択する。
対象のbasファイルをインポートすると、ツリーにモジュールが表れ、先程エクスポートしたプログラムを開いたCSVファイルに対し実行することができる。
Excel VBAは長く使ってきたが、basファイルとしてモジュールを管理する手法は最近知った。
basファイルはVBEだけでなく、好みのエディタでも編集することができるので、コーディングも捗りそうだ。