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


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excelプロフェッショナルエンジニアテクニック Topics  >     (05) Excelブックに存在するモジュール一覧を作成する

 
(05) Excelブックに存在するモジュール一覧を作成する

 Excelブックに存在するモジュールをVBAにて調べる方法を紹介します。

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

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

 以下のようにVBAProjectにモジュールを含むExcelブックを想定します。
 下記サンプルコードをModule1に記載して下さい。Book内のモジュール一覧をセルに出力することができます。
<Module1>

 1行目:	Public Sub Sample_MakeModuleTable_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行目:    ' VBProjectに存在するコンポーネント数を変数に格納する。
13行目:    Dim CompCnt As Long
14行目:    CompCnt = Obj.VBComponents.Count
15行目:	
16行目:    ' VBProjectに存在するコンポーネントを一つずつ参照する。
17行目:    Dim lp As Long
18行目:    For lp = 1 To CompCnt
19行目:        With Range("A1")
20行目:            .Offset(lp - 1, 0).Value = Obj.VBComponents(lp).Name
21行目:            .Offset(lp - 1, 1).Value = Obj.VBComponents(lp).Type
22行目:        End With
23行目:    Next
24行目:	
25行目:    ' オブジェクトを破棄する。
26行目:    Set Obj = Nothing
27行目:	
28行目:	End Sub
 ここで利用しているのはVBComponentsコレクションです。VBComponent コレクションは、For... Each ステートメントで使用できる標準的なコレクションです。VBComponent コレクションの次のプロパティをサンプルコードで使用しています。
Countプロパティコレクション内の要素数を表す

Nameプロパティオブジェクトを識別するためにコードで使用されている名前を表す文字列型 (String) の値を設定します。値の取得も可能です。

Typeプロパティオブジェクト型を含む数値または文字列値を返します。値の取得のみ可能です。

 このサンプルコードを実行すると、以下の結果が返ります。
  


 コンポーネントのTypeが示す数字は、以下の対応になっています。
Type意味
1標準モジュール
2クラスモジュール
3Microsoft Form
11ActiveXデザイン
100Documentモジュール
ページの先頭へ