制御 ModuleやClass・UserForm名を取得する
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
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 |