Hallo Alex,
sorry das ich auch mal meinem Senf dazu gebe.
Danke für den Senf 
Auf die Verwendung der Funktion Dir$ zur Existenzprüfung
sollte dringend verzichtet werden, da diese Funktion nicht
eintrittsinvariant ist. Ihre Verwendung kann zur Folge haben,
dass sich anderen Programmteile nach Aufruf der Funktion zur
Existenzprüfung nicht mehr wie erwartet verhalten!
Was „eintrittsinvariant“ bedeutte muß ich erst nachlesen, kenne ich nicht.
Will man die Existenz eines Files oder Ordners prüfen, so
sollten immer Filebezogene Routinen eingesetz werden (
FileLen, GetAttr etc.)
Okay, aber vorher möchte ich schon genauer wissen was da Dir verurscht.
Den Code teste ich heute Abend oder morgen, habe gerade am Stück diese Codes programmiert:
http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…
und mein Kopf braucht erstmal was anderes als Vba *gg*
Im Anhang habe ich einen Teilcode gepostet. Wißt ihr zufällig warum, wenn die Prozedur eine Proberty ist, der Code an der Stelle:
lngStartLine = lngStartLine + .ProcCountLines(.ProcOfLine(lngStartLine, vbext_pk_Proc), vbext_pk_Proc)
abbricht und einen Fehler bringt? Fehler soll sein daß er Sub oder Funktion nicht kennt, aber bei allen anderen Dateien/Prozeduren vorher kannte er sie noch, erst wenn in dem auszulesenden Modul ein Property auftaucht bricht er ab. Subs und Functionen liest der Code bestens aus.
Laut Hilfe haben nur Subs und Functions „vbext_pk_Proc“, was auch immer das genau ist.
Wie umgehe ich den Fehler und lese auch eine Property-Prozedur aus?
Ich weiß jetzt gar nicht ob VB Properties kennt usw.
Und es hat auch keinerlei Priorität, würde es halt gerne wissen.
Gruß
Reinhard
Sub ListProcedures(ByVal wb As Workbook)
'Verweis auf Microsoft Visual basic for Applications Extensibility muß gesetzt sein!!
'Code 2007 by Reinhard
Dim VBCodeMod As CodeModule, lngStartLine As Long, strMsg As String
Dim strModName As String, CMdl, Zeile As Long, Spalte As Integer
Dim N As Long, Von As Long, Bis As Long, Prozedur As String
Dim ws As Worksheet
Call ZeileSpalte
Set ws = ThisWorkbook.Worksheets("Tabelle1")
ws.Cells(Zei, Spa) = wb.Name
For Each CMdl In wb.VBProject.VBComponents
ws.Cells(Zei, Spa + 1) = CMdl.Name
Set VBCodeMod = wb.VBProject.VBComponents(CMdl.Name).CodeModule
With VBCodeMod
lngStartLine = .CountOfDeclarationLines + 1
Do Until lngStartLine \>= .CountOfLines
Prozedur = .ProcOfLine(lngStartLine, vbext\_pk\_Proc)
ws.Cells(Zei, Spa + 2) = Prozedur
For N = 1 To lngStartLine - 1
ws.Cells(Zei, Spa + 3) = .Lines(N, 1)
Call ZeileSpalte
Next N
On Error GoTo Weiter 'Fehler wenn Prozedur keine Sub oder Function sondern Property
lngStartLine = lngStartLine + .ProcCountLines(.ProcOfLine(lngStartLine, vbext\_pk\_Proc), vbext\_pk\_Proc)
On Error GoTo 0
Von = .ProcStartLine(Prozedur, vbext\_pk\_Proc)
Bis = .ProcCountLines(Prozedur, vbext\_pk\_Proc)
For N = Von To Von + Bis - 1
ws.Cells(Zei, Spa + 3) = .Lines(N, 1)
Call ZeileSpalte
Next N
Loop
End With
Weiter:
Next CMdl
ActiveSheet.UsedRange.Columns.AutoFit
End Sub