【ExcelVBA】標準モジュールを追加/名前変更/削除する方法
更新日:2023/12/01
VBE(Visual Basic エディタ)上でプロジェクトに標準モジュールを追加したり、名前変更や削除する方法をお伝えします。
今回はメニュー操作とVBAコードでの操作方法の2種類でお届けします。
標準モジュールの追加
プロジェクトに標準モジュールを追加する方法は、3つあります。
方法1:メニューから追加
プロジェクトエクスプローラで標準モジュールを追加したいプロジェクトを選択します。
(プロジェクト内ならシートやフォルダなど、なんでもOKです)
メニュー:挿入 ⇒ 標準モジュール を選択します。
(キー操作:Alt+I ⇒ M でもOK)
または次のメニューアイコンから、標準モジュールを選択します。
プロジェクトに標準モジュールフォルダが追加され、その中に標準モジュールが作成されます。
標準モジュールの名前は自動で、Module1 になります。
方法2:プロジェクトエクスプローラで追加
方法1と同じように、プロジェクトエクスプローラで標準モジュールを追加したいプロジェクトを選択します。
マウスの右ボタンでメニューを表示します。
表示されたメニューから、挿入 ⇒ 標準モジュール を選択します。
プロジェクトに標準モジュールフォルダが追加され、その中に標準モジュール(Module1)が作成されます。
方法3:マクロの記録機能で追加
Excelのマクロの記録機能でマクロ記録をおこなうと、プロジェクトに標準モジュールが作成されます。
複数の標準モジュールを追加
プロジェクトに複数の標準モジュールを追加するときは、前項の方法1:メニューから追加または方法2:プロジェクトエクスプローラで追加のどちらかの方法をおこないます。
すると、新しい標準モジュールが追加されます。
標準モジュールの名前は連番で付けられます。
繰り返すたびに、Module3、Module4と増えていきます。
標準モジュールの名前変更
標準モジュールの名前変更はプロパティウィンドウでおこないます。
最初にプロジェクトエクスプローラで名前を変更したい標準モジュールを選択します。
プロパティウィンドウの全体タブ内の(オブジェクト名)を変更すると、標準モジュールの名前が変更されます。
標準モジュールの削除(解放)
標準モジュールの削除方法は二つあります。
方法1:メニューから削除(解放)
最初にプロジェクトエクスプローラで解放したい標準モジュールを選択します。
メニューのファイルをクリックします。
表示されたメニューに、選択したモジュール名で解放する項目があることを確認します。
その項目をクリックすると、標準モジュールをエクスポートするかどうかの確認メッセージが表示されます。
『はい』を選ぶと、出力先の選択画面が表示されます。
出力しないときは、『いいえ』を選択します。
標準モジュールが開放され、プロジェクトエクスプローラからモジュールの名前が削除されます。
方法2:プロジェクトエクスプローラで削除(解放)
方法1と同じように、プロジェクトエクスプローラで解放したい標準モジュールを選択します。
選択した標準モジュールの上で、マウスの右ボタンをクリックしてメニューを表示します。
表示されたメニューに、選択したモジュール名で解放する項目があることを確認します。
その項目をクリックすると、標準モジュールをエクスポートするかどうかの確認メッセージが表示されます。
『はい』を選ぶと、出力先の選択画面が表示されます。
出力しないときは、『いいえ』を選択します。
標準モジュールが開放され、プロジェクトエクスプローラからモジュールの名前が削除されます。
マクロ(コード)での操作
VBAのプログラムコードで標準モジュールを操作する方法を紹介します。
なおエラー対策をしていないので、状況に合わせて対応してください。
標準モジュールの追加
次のコードを実行すると、アクティブプロジェクトに標準モジュールが追加されます。
' 標準モジュールを新規追加
Sub addStandardModule()
Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_StdModule)
End Sub
標準モジュールの名前変更
次のコードを実行すると、アクティブプロジェクト内の標準モジュールの名前を変更します。
' 既存標準モジュールの名前変更
' moduleName 現在の名前
' newName 変更後の名前
Sub renameStandardModule(moduleName As String, newName As String)
Application.VBE.ActiveVBProject.VBComponents(moduleName).Name = newName
End Sub
' renameStandardModuleのテスト
Sub test()
Call renameStandardModule("Module1", "myModule")
End Sub
※実際にはこのコードは標準モジュール以外の名前も変更できます。
標準モジュールを追加して名前変更
次のコードを実行すると、アクティブプロジェクト内に標準モジュールを追加して名前を変更します。
' 新規で標準モジュールを追加して名前変更
' name 変更後の名前
Sub addStandardModuleAndRename(name as String)
Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_StdModule).name = name
End Sub
' addStandardModuleAndRenameのテスト
Sub test2()
Call addStandardModuleAndRename("myModule2")
End Sub
標準モジュールを削除(解放)
次のコードを実行すると、アクティブプロジェクト内の標準モジュールを削除します。
' 標準モジュールを削除
' moduleName 削除するモジュールの名前
Sub deleteStandardModule(moduleName As String)
Application.VBE.ActiveVBProject.VBComponents.Remove _
Application.VBE.ActiveVBProject.VBComponents(moduleName)
End Sub
' deleteStandardModuleのテスト
Sub test3()
Call deleteStandardModule("myModule2")
End Sub
※実際にはこのコードは標準モジュール以外のコンポーネントも削除できます。
「プログラミングによるVisualbasicプロジェクトへのアクセスは信頼性に欠けます」の対処法
コード実行時に次のエラーが表示されることがあります。
この場合は、「トラストセンター」(旧セキュリティセンター)の設定をおこないます。
Excel上で、ファイルメニュー ⇒ オプション を選択して、オプション画面を表示します。
オプション画面で、『トラストセンター』を選択して、『トラストセンターの設定』ボタンを押します。
『マクロの設定』を選択して、『VBAプロジェクトオブジェクトモデルへのアクセスを信頼する』にチェックを入れます。
『OK』を押して適用します。
これで、エラーが表示されなくなります。
更新日:2023/12/01
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。