制御 ModuleやClass・UserFormを一覧から自動インポートする

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


Private Sub Workbook_Open()
'****************************************************
'ModuleやClass・UserFormを一覧から自動インポートする
'****************************************************
'本ブックと同じ階層にテキストを保存。
'行毎に記入の事
'全て「ThisWorkbook」に記述のこと

Dim TxtName As String
TxtName = "bas.txt" '#パラメータ

    basImport ThisWorkbook.Path & "\" & TxtName

End Sub


Private Sub basImport(basPath As String)
'**************************************************
'ModuleやClass・UserFormを一覧からインポートする
'**************************************************
'引数 basPath:指定テキストファイル
'定数 basFlPath:bas等の格納パス

Dim i, str As String, basName As String
Dim basFlPath As String
basFlPath = "C:\VBAbas\" '#パラメータ

    DeleteComponents

    If Dir(basPath) = "" Then
        MsgBox "Not File! " & basPath
        Exit Sub
    End If

    i = FreeFile
    Open basPath For Input As #i
        Do Until EOF(i)
            Line Input #i, str
            If Len(str) > 0 Then
                basName = basFlPath & str
                If Dir(basName) = "" Then
                    MsgBox "Not Module! " & basName
                    Exit Do
                Else
                    ImportComponent basName
                End If
            End If
        Loop
    Close #i

    ThisWorkbook.Save

End Sub


Private Sub ImportComponent(strPath As String)
'***********************************************
'ModuleやClass・UserFormをインポートする
'***********************************************

    ThisWorkbook.VBProject.VBComponents.Import strPath

End Sub


Private Sub DeleteComponents()
'************************************
'ModuleやClass・UserFormを削除する
'************************************
'※自分も削除されます。
'NoDeleteObjTyp:削除非対象コレクション
'1  :Module
'2  :ClassModule
'3  :UserForm
'100:Workbook & Sheet
Dim Obj As Object, NoDeleteObjTyp As Integer
NoDeleteObjTyp = 100

For Each Obj In ThisWorkbook.VBProject.VBComponents

    If Obj.Type <> NoDeleteObjTyp Then
        ThisWorkbook.VBProject.VBComponents.Remove Obj
    End If

Next Obj

End Sub

 

2000年01月01日|[VBサンプルコード]:[制御]