【VBA】VBAマクロのモジュール一覧のDictionaryを取得する

準備

[ファイル]→[オプション]→[セキュリティーセンター]→[セキュリティーセンターの設定]→
[VBA プロジェクト オブジェクト モデルへのアクセスを信頼する]にチェック

サンプルプログラム

Sub sample()

    Dim wk As Workbook
    Dim dicModule As Object
    
    'Excelファイルを開く ※「リンクの更新」はしないで開く
    Set wk = Workbooks.Open(Filename:="C:\Users\user\Desktop\temp\sampleVBA.xlsm", _
                            UpdateLinks:=0)
    
    'モジュール一覧のDictionaryを取得
    Set dicModule = getDicModule(wk.VBProject.VBComponents)
    
    'Excelファイルを保存せずに閉じる
    wk.Close SaveChanges:=False
    '後片付け
    Set wk = Nothing

End Sub

'モジュール一覧のDictionaryを取得
Private Function getDicModule(VBComponents As Object) As Object
    
    Dim i As Integer
    Dim dicModule As Object
    
    Set dicModule = CreateObject("Scripting.Dictionary")
    
    'モジュール数分繰り返し
    For i = 1 To VBComponents.Count
        '標準モジュールのみを対象
        If VBComponents(i).Type = 1 Then
            If Not dicModule.Exists(functionName) Then
                dicModule.Add VBComponents(i).Name, ""
            End If
        End If
    Next
    
    Set getDicModule = dicModule
    '後片付け
    Set dicModule = Nothing

End Function


●コンポーネントのTypeについて

Type 内容
1標準モジュール
2クラスモジュール
3ユーザーフォーム
11ActiveXデザイン
100Documentモジュール
タイトルとURLをコピーしました