VBComponentオブジェクトは、VBProjectに含まれる標準モジュールや、UserForm、Sheet1やThisWorkbookなどのドキュメントモジュールなどを表します。ここでは、アクティブブックに次のようなコンポーネントが含まれていたとします。

次のコードは、アクティブブックに含まれるコンポーネントの情報をセルに入力します。
Sub Sample3()
Dim i As Long
With ActiveWorkbook.VBProject
For i = 1 To .VBComponents.Count
Cells(i, 1) = .VBComponents(i).Name
Cells(i, 2) = .VBComponents(i).Type
Next i
End With
End Sub

VBComponentオブジェクトのTypeプロパティは、次のような値を返します。
| 値 | 内容 |
|---|---|
| 1 | 標準モジュール |
| 2 | クラス モジュール |
| 3 | Microsoft Form |
| 11 | ActiveX デザイナ |
| 100 | Document モジュール |
次のコードは、アクティブブックに含まれている標準モジュールを調べます。
Sub Sample4()
Dim i As Long, buf As String, mdlName As String
With ActiveWorkbook.VBProject
For i = 1 To .VBComponents.Count
If .VBComponents(i).Type = 1 Then
mdlName = mdlName & .VBComponents(i).Name & vbCrLf
End If
Next i
If mdlName <> "" Then
MsgBox "次の標準モジュールが含まれています" & vbCrLf & mdlName
Else
MsgBox "標準モジュールは含まれていません"
End If
End With
End Sub

VBComponentsコレクションのAddメソッドを使うと、VBProjectにコンポーネントを追加できます。このとき、Addメソッドの引数に次の数値を指定して、追加するコンポーネントの種類を特定できます。
| 値 | 内容 |
|---|---|
| 1 | 標準モジュール |
| 2 | クラス モジュール |
| 3 | Microsoft Form |
次のコードは、アクティブブックに標準モジュールが含まれていない場合は、新しい標準モジュールを追加します。
Sub Sample5()
Dim i As Long, flag As Boolean
With ActiveWorkbook.VBProject
For i = 1 To .VBComponents.Count
If .VBComponents(i).Type = 1 Then
flag = True
Exit For
End If
Next i
If Not flag Then .VBComponents.Add 1
End With
End Sub
コンポーネントをファイルにエクスポートするときはVBComponentオブジェクトのExportメソッドを使います。また、外部のファイルをインポートするには、VBComponentsコレクションのImportメソッドを使います。
次のコードは、Book1のModule1を「C:\Work\Book1_Module.bas」という名前でエクスポートします。続いてBook2に、エクスポートした「C:\Work\Book1_Module.bas」をインポートします。Book1とBook2を開いた状態で実行してください。
Sub Sample6()
Const Filename As String = "C:\Work\Book1_Module.bas"
Workbooks("Book1.xls").VBProject.VBComponents("Module1").Export Filename
Workbooks("Book2.xls").VBProject.VBComponents.Import Filename
End Sub