Hallo Peter,
wenn ich dein Anliegen richtig verstehe, willst du alle Makros auflisten, wo irgendwo im Code das Wörtchen Save vorkommt? Dann probiers mal mit diesem Code:
Private Type mdlProps
Filename As String
Modulename As String
Procname As String
Line As Long
Linetext As String
End Type
Sub ListMacros()
Dim tmp As Template, doc As Document, arr() As mdlProps, Suchwort As String, i As Long
Suchwort = InputBox("Geben Sie ein Suchwort ein, das im Code eines beliebigen Makros enthalten sein soll", "ListMacros")
ReDim arr(0)
For Each tmp In Templates
ListCode tmp.VBProject, tmp.Name, Suchwort, arr
Next tmp
For Each doc In Documents
ListCode doc.VBProject, doc.Name, Suchwort, arr
Next doc
Debug.Print "Dateiname", "Modulname", "Prozedurname", "Zeile", "Zeilentext"
For i = 1 To UBound(arr)
Debug.Print arr(i).Filename, arr(i).Modulename, arr(i).Procname, arr(i).Line, arr(i).Linetext
Next i
End Sub
Sub ListCode(prj As Object, Name As String, Suchtext As String, arr() As mdlProps)
Dim mdl As Object, ln As String, u As Long
For Each mdl In prj.VBComponents
For i = 1 To mdl.CodeModule.CountOfLines
ln = mdl.CodeModule.Lines(i, 1)
If InStr(1, ln, Suchtext, vbTextCompare) > 0 Then
u = UBound(arr) + 1
ReDim Preserve arr(u)
arr(u).Filename = Name
arr(u).Modulename = mdl.Name
arr(u).Procname = mdl.CodeModule.ProcOfLine(i, 0)
arr(u).Line = i
arr(u).Linetext = ln
End If
Next i
Next mdl
End Sub
Oder soll das Wörtchen wirklich nur im Makronamen vorkommen? Der Code ließe sich dahingehend anpassen.
Gruß Mr. K.
|