準備
[ファイル]→[オプション]→[セキュリティーセンター]→[セキュリティーセンターの設定]→
[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 | ユーザーフォーム |
11 | ActiveXデザイン |
100 | Documentモジュール |