Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excelプロフェッショナルエンジニアテクニック Topics  >     (09) Excelブック内のモジュールを解放する

 
(09) Excelブック内のモジュールを解放する

 VBAProjectのモジュールを解放する場合、通常はマウス操作によって一つずつ解放するしかありません。複数のモジュールを解放する場合、これはかなり面倒臭い作業です。

 全モジュールを一括で解放する機能の実装方法を紹介します。

 Visual Baisc プロジェクトへのアクセスを許可します。

  「(04) Visual Baisc プロジェクトへのアクセスを許可する方法」

 下記サンプルコードをModule1に記載して下さい。
<Module1>

 1行目:  Public Sub Sample_RemoveModule_01()
 2行目:  
 3行目:      ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 4行目:      ' 参照設定:
 5行目:      ' 「Microsoft Visual Basic for Application Extensibility」
 6行目:      ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 7行目:      
 8行目:      ' このブックのVBProjectをオブジェクト変数に格納する。
 9行目:      Dim Obj As VBIDE.VBProject
10行目:      Set Obj = ThisWorkbook.VBProject
11行目:  
12行目:      ' 解放対象のモジュール名を配列に設定する。
13行目:      Dim removeModule(3) As String
14行目:      removeModule(1) = "UserForm1"
15行目:      removeModule(2) = "Module2"
16行目:      removeModule(3) = "Class1"
17行目:  
18行目:      ' モジュールを解放する。
19行目:      Dim lp As Long
20行目:      For lp = 1 To UBound(removeModule)
21行目:          Call Obj.VBComponents.Remove(Obj.VBComponents(removeModule(lp)))
22行目:      Next
23行目:  
24行目:      ' オブジェクトを破棄する。
25行目:      Set Obj = Nothing
26行目:  
27行目:  End Sub
 ここで利用しているのはVBComponentsコレクションのRemoveメソッドです。
Remove(モジュール名){モジュール名}で指定したモジュールを削除する。

 このサンプルコードを実行すると、解放したいモジュールがVBAから削除できます。
  


 但し、この解放方法はDocumentモジュールには使用することができません。
ページの先頭へ