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

