Aby sprawdzić rzeczywistą strukturę kodu projektu, należy zezwolić na dostęp do modelu obiektu projektu VBA (Ustawienia Excela> Centrum zaufania> Ustawienia makr, a następnie dodać odwołanie do Microsoft Visual Basic dla Rozszerzenia Aplikacji vX), gdzie vX to wersja taka jak 5.3. Możesz użyć obiektów w tym celu, aby określić, które arkusze mają w sobie kod.
Zalecam jednak zrobienie tego w inny sposób.
Zamiast iterację arkuszy w skoroszycie, a następnie wewnątrz owijki błędu, uruchomić makro przy użyciu Application.Run
Zauważ, że byłoby lepiej, praktyka byłaby kod i umieścić to wszystko w standardzie moduł, a następnie przechodzą w arkuszach jak argumenty (patrz mój drugi przykład)
Np
'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