Excel VBAプロジェクトを整理する方法!保守しやすいフォルダ・命名規則まとめ
生徒
「VBAでプログラムを書いてみたんですけど、後で見返すとどこに何を書いたか全然わからなくなっちゃいました……。」
先生
「それはプログラミングを始めたばかりの方が必ずぶつかる壁ですね。VBAには『整理整頓のルール』があるんですよ。」
生徒
「整理整頓ですか?ただ動けばいいだけじゃなくて、見た目や名前も大事なんですね。」
先生
「その通りです。これを『保守性(ほしゅせい)』と言って、後で修正しやすくするためにとても重要なんです。分かりやすい命名規則や管理方法を学んでいきましょう!」
1. なぜVBAプロジェクトの整理が必要なのか?
Excel VBAでマクロを作っていると、最初は小さなプログラムでも、機能が増えるにつれてコードの量(プログラムの行数)がどんどん増えていきます。パソコンを使い始めたばかりの人が、デスクトップにファイルを出しっぱなしにしていると、目的のファイルが探せなくなるのと同じことが、VBAの内部でも起こります。
プロジェクトを整理する最大の目的は、「未来の自分や他人が見ても、すぐに内容を理解できるようにすること」にあります。これをプログラミングの用語で保守(ほしゅ)と呼びます。保守がしやすいプロジェクトは、エラーが起きたときの原因特定が早く、機能を追加するのも簡単になります。逆に、整理されていないコードは「スパゲッティコード」と呼ばれ、複雑に絡み合って誰にも手が付けられなくなってしまいます。
まずは、「名前の付け方」と「場所の分け方」という2つの基本から意識していきましょう。
2. モジュール名の命名規則を決めよう
VBAの編集画面(VBE)で「標準モジュール」を追加すると、初期設定では Module1、Module2 という名前が自動で付きます。しかし、これでは中身が「データの計算」なのか「印刷の処理」なのか分かりません。モジュールの名前を変更することは、本棚のラベルを書き換えるようなものです。
おすすめの命名規則は、「役割がわかる単語を英語(または日本語)で付ける」ことです。例えば、以下のようなルールを決めておくと非常に分かりやすくなります。
mdlMain:メインとなる実行処理mdlCommon:色々な場所で使う共通の部品mdlImport:データを取り込むための処理mdlExport:ファイルを出力するための処理
接頭辞(せっとうじ)として mdl(Moduleの略)を付けると、それが標準モジュールであることが一目で分かります。プログラミング未経験の方は、最初は 作成処理 や 集計処理 といった日本語の名前でも構いません。まずは「名前から中身が想像できること」を最優先しましょう。
3. プロシージャ(Sub/Function)の名前の付け方
モジュールの中には、実際の命令の塊である「プロシージャ」を書きます。ここにも命名規則を適用しましょう。プロシージャ名は「動詞 + 名詞」の形にすると、何をするための命令なのかが明確になります。
例えば、売上データを計算するプログラムであれば、以下のように記述します。
Sub CalculateSalesAmount()
' 売上金額を計算する処理をここに書く
MsgBox "計算が完了しました!"
End Sub
もし名前が Sub sogo()(総合の略のつもり)など、自分にしか分からない略語にしてしまうと、後で読み返したときに「総合って何を総合するんだっけ?」と迷う原因になります。できるだけ丁寧な名前を心がけましょう。
4. モジュールの分割と役割分担
1つのモジュールに数千行ものプログラムを書き込むのは避けましょう。1つの部屋に家具も家電も服もすべて詰め込むと掃除が大変なのと同じです。役割ごとにモジュールを分けるのが整理のコツです。
例えば、「請求書作成ツール」を作る場合、以下のように役割を分散させます。
- Sheet1(請求入力):シートのボタン操作などを管理
- mdlDatabase:顧客データや商品データを検索する処理
- mdlPDFExport:PDFとして保存する専用の処理
- mdlFormat:セルの色や罫線を整える見た目の処理
このように分けておくことで、「見た目を変えたいときは mdlFormat を見ればいい」という風に、迷わずに作業ができるようになります。これを「関心の分離」と言い、プログラミングにおいて非常に重要な考え方です。
5. コメントを使って「地図」を作ろう
どんなに綺麗な名前を付けても、コードの内容が複雑になると理解に時間がかかります。そこで役立つのがコメントです。VBAでは、行の先頭に '(シングルクォーテーション)を付けると、その行はプログラムとして実行されず、メモ書きとして残せます。
プログラミング初心者の方は、まず「これから何をするか」を日本語で書いてから、その下にコードを書く練習をしましょう。
' ======================================================
' 処理名:データ初期化
' 内容:入力シートのA2からC10までの範囲をクリアする
' 作成者:田中
' ======================================================
Sub InitializeData()
' 画面の更新を止めて処理を速くする(おまじない)
Application.ScreenUpdating = False
' 指定範囲の値を消去
Range("A2:C10").ClearContents
Application.ScreenUpdating = True
End Sub
このように、プログラムの冒頭に「説明書き」を入れておくことで、プロジェクト全体の見通しが劇的に良くなります。コメントは、いわばプログラムという迷路の中に立てる「案内板」です。
6. ファイルのフォルダ構成を整える
Excel VBAのプロジェクト管理は、Excelファイルの中だけではありません。そのファイルを保存しているパソコン上のフォルダ構成も重要です。マクロ付きExcelファイル(.xlsm)が、デスクトップや「ドキュメント」フォルダにバラバラに置いてあると、関連するデータファイルを見失ってしまいます。
おすすめのフォルダ構成例を紹介します。
- [01_ツール本体]:マクロが入ったExcelファイルを格納
- [02_入力データ]:読み込むためのCSVファイルなどを格納
- [03_出力結果]:マクロで作成したファイルを保存する場所
- [04_古いバージョン]:修正前の古いファイルを保管(バックアップ)
このようにフォルダを分けて管理することで、マクロの中で「どのフォルダのファイルを開くか」という設定が書きやすくなります。パソコン操作に慣れていない方も、まずは専用のフォルダを1つ作り、その中に整理して入れる習慣をつけましょう。
7. オブジェクト名の変更でミスを防ぐ
VBAには、ワークシート自体にも名前を付ける機能があります。通常、シートは Sheet1 という名前ですが、これをVBEのプロパティウィンドウから wsInput などの名前に変更できます。
Excel上でシート名が「入力画面」から「データ入力」に変更されても、プログラム内で wsInput というオブジェクト名を使っていれば、コードを修正する必要がありません。これは、Excelのシート名(ユーザーが変えられる名前)と、VBAでの名前(プログラマが決める名前)を切り離して管理できる便利なテクニックです。
' シートのオブジェクト名を「wsData」に変更した場合の書き方
Sub ShowSheetName()
' シート名が何であっても、オブジェクト名で指定すればエラーにならない
MsgBox wsData.Name
End Sub
8. バージョン管理の重要性とバックアップ
「整理」の一環として欠かせないのが、バックアップ(予備の保存)です。プログラミングに慣れないうちは、コードを書き換えている途中で動かなくなってしまうことがよくあります。「さっきまでは動いていたのに!」とパニックにならないために、大きな変更を加える前には、ファイルをコピーして保存しておきましょう。
ファイル名の末尾に _20231025 や _v1 などの日付や番号を付けるのが一般的です。最新のファイルがどれか一目で分かるようにしておくのも、立派なプロジェクト管理の技術です。パソコンが壊れたり、Excelが強制終了したりすることに備えて、整理整頓されたフォルダごとUSBメモリやクラウドストレージ(OneDriveなど)に保存する癖をつけましょう。
9. 綺麗なプロジェクトを作るためのチェックリスト
最後に、自分のVBAプロジェクトが整理されているか確認するためのチェック項目をまとめました。これらを意識するだけで、プロ級の管理ができるようになります。
| チェック項目 | 理由 |
|---|---|
モジュール名が Module1 のままではないか |
中身を推測しやすくするため |
| プロシージャ名は「動詞+名詞」になっているか | 何をする命令か明確にするため |
| 難しい処理にコメント(説明)を入れているか | 後で読み返す自分のため |
| 1つのモジュールが長くなりすぎていないか | 探し物を減らすため |
| 関連するフォルダが整理されているか | ファイルの読み書きエラーを防ぐため |
整理整頓は最初が一番大変ですが、一度ルールを決めてしまえば、あとはそれに沿って書くだけです。綺麗なコードは、バグ(間違い)を減らし、あなたの作業時間をさらに短縮してくれます。ぜひ今日から、自分なりの「整理ルール」を取り入れてみてくださいね。