この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:guest
更新日時:2026-06-10 11:03:32

タイトル: モジュールの名前変更方法
SEOタイトル: VBA モジュール名の変更方法完全ガイド (F4プロパティ/命名規則)

この記事の要点
  • VBA でモジュール名を変えるには VBE のプロジェクト エクスプローラで対象モジュールを選択 → F4 でプロパティウィンドウを開き Name プロパティを編集
  • 右クリックの「名前の変更」メニューは無い。プロパティウィンドウ経由のみ
  • 命名規則: 英数字とアンダースコア (_) のみ、先頭はアルファベット、255 文字以内、VBA 予約語禁止、半角スペース不可
  • リネーム後は Call MyModule.MySub のようにモジュール名で修飾している呼び出し箇所を修正
  • ファイル名と Name は別物 (シートは ThisWorkbook.Sheets("Sheet1") 用の名前と、コードからの参照名 Sheet1 が分離)

変更手順 (5 ステップ)

  1. Excel で Alt + F11 を押し VBE を起動
  2. 画面左の プロジェクト エクスプローラ で対象モジュールをクリックして選択
    表示されていない場合は 表示 → プロジェクト エクスプローラ (Ctrl + R)
  3. F4 を押す、または 表示 → プロパティ ウィンドウ を開く
  4. プロパティウィンドウの (Name) プロパティに新しい名前を入力
  5. Enter で確定 → プロジェクト エクスプローラ上の表示も即変わる

標準モジュール / クラスモジュール / フォーム / シートモジュール / ThisWorkbook いずれも同じ操作で変更できます (ただし ThisWorkbook はオブジェクト名であって Name の編集に制限あり)。

命名規則 (VBA 識別子のルール)

ルールOK / NG
先頭はアルファベットOK: Util / NG: 1Util, _Util
使える文字: 英数字とアンダースコアOK: Util_Date / NG: Util-Date, Util.Date
長さ最大 255 文字実用的には 31 文字以内推奨
VBA 予約語禁止NG: Sub, If, End, For, Loop, Module, Class
半角スペース不可NG: My Module
全角文字動作するが推奨しない (英数字推奨)
大文字小文字区別しない (内部的に統一される)
同名禁止同じプロジェクト内で重複不可

命名のおすすめパターン

モジュール種別推奨プレフィックス
標準モジュールM_ / modM_Util, modDateFormat
クラスモジュールC_ / clsC_Customer, clsLogger
フォームモジュールF_ / frmF_Login, frmSettings
API ラッパーAPI_API_Win32
定数モジュールConst_Const_Color

リネーム後の影響範囲チェック

モジュール内のプロシージャ呼び出しにモジュール名修飾を使っている箇所は、リネーム後に手動で書き換える必要があります。

' リネーム前: Module1 → リネーム後: M_DateUtil
'
' モジュール名修飾あり (要修正)
Call Module1.FormatDate(d)              ' ❌ コンパイルエラー
Module1.FormatDate(d)                   ' ❌
Debug.Print Module1.PI                  ' ❌

' ↓ リネーム後はこう書き換え
Call M_DateUtil.FormatDate(d)
M_DateUtil.FormatDate(d)
Debug.Print M_DateUtil.PI

' モジュール名修飾なし (修正不要)
Call FormatDate(d)                      ' ✅ OK
Debug.Print PI                          ' ✅ OK (同名プロシージャが他に無ければ)

編集 → 検索置換で機械的に修正

  1. VBE で 編集 → 検索 (Ctrl + F) を開く
  2. 検索対象を 「現在のプロジェクト」
  3. 古い名前 (例: Module1.) を検索 → 出現箇所を全て確認
  4. 必要に応じて置換 (Module1.M_DateUtil.)
  5. F5 で実行、コンパイル → プロジェクトのコンパイル でエラー確認

シートモジュールの「Name」は 2 種類ある

Excel のシートに紐づくモジュールは、コードからの参照名 (CodeName)シートタブの表示名 が分離しています:

VBE プロパティ意味
(Name)CodeName。コードから Sheet1 として参照shSummary
Nameシートタブの表示名。Sheets("Sheet1") の文字列「集計」

これによりユーザがタブ名を変えてもコードが壊れない設計が可能です:

' タブ名が変わると壊れる (悪い例)
Sheets("Sheet1").Range("A1").Value = "Hello"

' CodeName を使えばタブ名変更に強い (良い例)
shSummary.Range("A1").Value = "Hello"

名前変更でエラーが出るとき

エラー原因対処
「無効な名前です」予約語使用 / 先頭が数字命名規則に従う
「名前が既に使われています」同名モジュール存在別名にする
編集後 F5 でコンパイルエラー呼び出し箇所修飾未修正検索置換で対応
Name プロパティがグレーアウトプロジェクトがロック (パスワード保護)プロジェクト プロパティで解除
「プロジェクトは保護されています」ツール → プロジェクト プロパティの保護タブパスワード入力

プロジェクト名 (VBAProject) の変更

モジュールではなくプロジェクト全体の名前 (デフォルト VBAProject) を変更したい場合:

  1. VBE で ツール → VBAProject のプロパティ
  2. 全般タブの「プロジェクト名」を変更 (例: UtilityLib)
  3. OK

他ブックから参照設定でリンクする場合、この名前で参照されるので意味のある名前にします。

FAQ

Q: モジュール名を変えるとマクロ実行が壊れる?
A: シートのボタンに割り当てたマクロは「モジュール名.プロシージャ名」で保存されているため、リネーム後にボタンの右クリック → マクロの登録から再設定が必要なことがあります。

Q: 全モジュールを一括リネームしたい
A: VBE 標準には無し。Rubberduck (OSS の VBE アドイン) を入れると Refactor > Rename で一括リネームと参照書き換えが可能です。

Q: モジュールをエクスポートして名前を変えて再インポートはできる?
A: できます。右クリック → ファイルのエクスポート (.bas / .cls)、テキストエディタで先頭の Attribute VB_Name = "OldName" を変更、再インポート。

Q: 名前変更で undo (元に戻す) は効く?
A: プロパティウィンドウの操作は通常 Ctrl+Z 対象外です。元に戻したい場合は再度プロパティから旧名を入力してください。