Чтобы запросить фактическую структуру кода вашего проекта, вам необходимо разрешить доступ к объектной модели проекта VBA (параметры Excel> Центр доверия> Параметры макроса, затем добавить ссылку на Microsoft Visual Basic для расширяемости приложения vX), где vX версия, подобная 5.3. Вы можете использовать объекты в этом, чтобы определить, какие листы имеют какой-то код внутри них.
Однако я бы порекомендовал делать это по-другому.
Вместо перебирать листы в рабочей книге, а затем, в пределах оболочки ошибки, запустите макрос, используя Application.Run
Обратите внимание, что было бы лучше практика, чтобы реорганизовать свой код и поместить все это в стандартном модуль, а затем передать в рабочие листы в качестве аргументов (см мой второй пример)
Например:
'With code distributed in each worksheet
Sub blah()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
On Error Resume Next
Application.Run ws.CodeName & ".CollectInfoMacro"
If Err.Number = 1004 Then Debug.Print "Skipping "; ws.Name; ", No macro defined"
On Error GoTo 0
Next ws
End Sub
'Otherwise, better practice would be to refactor
'and not have code on each sheet, instead in a standard module:
Sub blahblah()
Dim ws As Worksheet
Dim results As Collection
Set results = New Collection
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Summary" Then 'or whatever
results.Add getYourInfoForTheSummary(ws), ws.Name
End If
Next ws
'Process your results (i.e. dump to the summary worksheet etc)
...
End Sub
Function getYourInfoForTheSummary(ws As Worksheet) As Collection 'or return whatever
Dim results As Collection
Set results = New Collection
With ws
'do something
End With
Set getYourInfoForTheSummary = results 'or whatever
End Function