準備
[ファイル]→[オプション]→[セキュリティーセンター]→[セキュリティーセンターの設定]→
[VBA プロジェクト オブジェクト モデルへのアクセスを信頼する]にチェック
サンプルプログラム
Sub sample()
Dim wk As Workbook
Dim dicFunction As Object
'Excelファイルを開く ※「リンクの更新」はしないで開く
Set wk = Workbooks.Open(Filename:="C:\Users\user\Desktop\temp\sampleVBA.xlsm", _
UpdateLinks:=0)
'プロシージャ一覧のDictionaryを取得
Set dicFunction = getFunction(wk.VBProject.VBComponents)
'Excelファイルを保存せずに閉じる
wk.Close SaveChanges:=False
'後片付け
Set wk = Nothing
End Sub
'プロシージャ一覧のDictionaryを取得
Private Function getFunction(VBComponents As Object) As Object
Dim rowCount As Double
Dim i As Integer
Dim functionName As String
Dim dicFunction As Object
Set dicFunction = CreateObject("Scripting.Dictionary")
'指定モジュールの総行数を取得
rowCount = VBComponents("Module1").CodeModule.CountOfLines
For i = 1 To rowCount
functionName = VBComponents("Module1").CodeModule.ProcOfLine(i, 0)
If functionName <> "" And Not dicFunction.Exists(functionName) Then
dicFunction.Add functionName, ""
End If
Next
Set getFunction = dicFunction
'後片付け
Set dicFunction = Nothing
End Function