VBAでモジュールの追加と削除

VBAでモジュールの追加と削除を行う。

VBAでモジュール(1:標準モジュール・2:クラスモジュール・3:ユーザフォーム)の追加と削除をするにはVBComponentsコレクションを利用して操作することができます。
追加にはAddメソッド、削除にはRemoveメソッドを利用します。

Addメソッドで定数(vbext_ct_StdModule など)を使って追加を行う場合は、参照設定で「Microsoft Visual Basic for Applications Extensibility」を追加する事できます。

Removeメソッドで削除をする場合は引数にVBComponentsコレクションのItemプロパティを利用し、そのItemプロパティの引数に削除したいモジュール名を指定します。

※実行時に「プログラミングによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます」または「’VBE’メソッドは失敗しました’_application’オブジェクト」のエラーメッセージが表示された場合

動作確認
Windows10/Excel2016:○
Windows11/Excel2024:○

 ●モジュールの追加

'******************************************************************************
' モジュールの追加
'******************************************************************************
Sub AddModule()

    'モジュールをそれぞれ追加
    With ThisWorkbook.VBProject.VBComponents
        .Add 1 '標準モジュール
        .Add 2 'クラスモジュール
        .Add 3 'フォーム
    End With

End Sub

 ■実行前

 ■実行結果

 ●モジュールの削除

'******************************************************************************
' モジュールの削除
'******************************************************************************
Sub DelModule()
 
    'モジュールの削除
    With ThisWorkbook.VBProject.VBComponents
        .Remove .Item("Module1")
    End With
 
End Sub

 ■実行結果


参照設定で「Microsoft Visual Basic for Applications Extensibility」を追加する事で下記のように追加モジュールを定数で指定することができます。
 ●モジュールの追加(定数で指定。参照設定の変更あり)

'******************************************************************************
' モジュールの追加
'******************************************************************************
Sub AddModuleCnst()

    With ThisWorkbook.VBProject.VBComponents
        .Add vbext_ct_StdModule    '標準モジュール
        .Add vbext_ct_ClassModule  'クラスモジュール
        .Add vbext_ct_MSForm       'フォーム
    End With

End Sub