制御 ModuleやClass・UserForm名を取得する

VB&VBA
FROG ふろっぐ
 
  • オプション

    本文印刷

    お気に入りに追加

  • 検索

    Googlewwwjp-ia
     

    Googlewwwjp-ia
     
  • 情報

  • 関連

[VB&VBA][制御 ModuleやClass・UserForm名を取得する]
Option Explicit


Sub GetComponentsName(ByRef ComponentsName() As String)
'***************************************************************
'ModuleやClass・UserForm名を取得する
'***************************************************************
'※自分も対象にされます。
'※対象はプロジェクト全体
'ObjTyp:対象コレクション

Dim ObjPath As String
ObjPath = ThisWorkbook.Path & "\"

Dim Obj As Object, ObjTyp As Integer
Dim i As Integer

ObjTyp = 1 '対象コレクション(Module)

Dim Extension(100) As String '拡張子(Select Caseの方がベター)
Extension(1) = ".bas"   '1  :Module
Extension(2) = ".cls"   '2  :ClassModule
Extension(3) = ".frm"   '3  :UserForm
Extension(100) = ".cls" '100:Workbook & Sheet

i = 0 '初期化

For Each Obj In ThisWorkbook.VBProject.VBComponents

    If Obj.Type = ObjTyp Then
        ReDim Preserve ComponentsName(i)
        ComponentsName(i) = Obj.Name & Extension(ObjTyp)
        i = i + 1
    End If

Next Obj

End Sub


Private Sub test()
Dim ComponentsName() As String
Dim str As String, i As Integer

Call GetComponentsName(ComponentsName)

For i = LBound(ComponentsName) To UBound(ComponentsName)
    str = str & i & vbTab & ComponentsName(i) & vbCr
Next i

MsgBox str

End Sub





Production Japan Import Application. Since 1998