Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Namen von Prozeduren auslesen

Forumthread: Namen von Prozeduren auslesen

Namen von Prozeduren auslesen
13.11.2025 20:11:28
Siegfried
Hallo zusammen,

ich habe in mehreren Modulen meine Prozeduren stehen und möchte diese in einem Arbeitsblatt auslesen
(weil ich zu faul bin diese händisch einzutragen).

Kann ich das mit VBA erreichen und wie müsste ich das anstellen?

Gruß
Siegfried
Anzeige

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen von Prozeduren auslesen
13.11.2025 20:55:21
Onur
WIR sollen händisch einen VBA-Code schreiben, damit du nicht händisch ein paar Prozeduren einzutragen brauchst ?
AW: Namen von Prozeduren auslesen
14.11.2025 01:57:06
Yal
Moin Siegfried,

bei Gemini folgende Frage gestellt
"Welche VBA Code muss ich in Excel verwenden, um alle Procedure-Zeilen (SUB, function, ...) in allen Modulen zu extrahieren und in einem Arbeitsblatt abzulegen?"

Und diesen Code bekommen:
Sub ProzedurDefinitionenExtrahieren()


' Verweis auf 'Microsoft Visual Basic for Applications Extensibility 5.3' erforderlich!

Dim wsOutput As Worksheet
Dim wb As Workbook
Dim vbc As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim lngLine As Long
Dim strLine As String
Dim lngRow As Long

Set wb = ThisWorkbook

' Neues Arbeitsblatt erstellen oder das vorhandene 'Prozeduren' verwenden
On Error Resume Next
Set wsOutput = wb.Worksheets("ProzedurListe")
On Error GoTo 0

If wsOutput Is Nothing Then
Set wsOutput = wb.Worksheets.Add(After:=wb.Sheets(wb.Sheets.Count))
wsOutput.Name = "ProzedurListe"
Else
' Vorhandene Daten löschen
wsOutput.UsedRange.Clear
End If

' Kopfzeilen schreiben
lngRow = 1
wsOutput.Cells(lngRow, 1).Value = "Komponente"
wsOutput.Cells(lngRow, 2).Value = "Zeilennummer"
wsOutput.Cells(lngRow, 3).Value = "Definition"

lngRow = lngRow + 1

' Alle Komponenten durchlaufen
For Each vbc In wb.VBProject.VBComponents

' Nur Komponenten mit Code verarbeiten (Standardmodule, Klassen, Formulare, Tabellenblätter)
If vbc.Type = vbext_ct_StdModule Or _
vbc.Type = vbext_ct_ClassModule Or _
vbc.Type = vbext_ct_Document Or _
vbc.Type = vbext_ct_MSForm Then

Set CodeMod = vbc.CodeModule

' Alle Zeilen im CodeModul durchlaufen
For lngLine = 1 To CodeMod.CountOfLines
strLine = Trim(CodeMod.Lines(lngLine, 1))

' Prüfen, ob die Zeile eine Prozedur-Definition enthält
If StrComp(Left(strLine, 3), "Sub", vbTextCompare) = 0 Or _
StrComp(Left(strLine, 8), "Function", vbTextCompare) = 0 Or _
StrComp(Left(strLine, 10), "Private Sub", vbTextCompare) = 0 Or _
StrComp(Left(strLine, 11), "Public Sub", vbTextCompare) = 0 Or _
StrComp(Left(strLine, 14), "Private Function", vbTextCompare) = 0 Or _
StrComp(Left(strLine, 13), "Public Function", vbTextCompare) = 0 Then

' Ergebnisse in das Arbeitsblatt schreiben
wsOutput.Cells(lngRow, 1).Value = vbc.Name
wsOutput.Cells(lngRow, 2).Value = lngLine
wsOutput.Cells(lngRow, 3).Value = strLine

lngRow = lngRow + 1
End If

Next lngLine
End If
Next vbc

' Formatierung
With wsOutput.UsedRange
.Columns.AutoFit
.Font.Name = "Consolas" ' Bessere Lesbarkeit für Code
.Rows(1).Font.Bold = True
End With

wsOutput.Activate
MsgBox "Die Prozedur-Definitionen wurden erfolgreich im Arbeitsblatt 'ProzedurListe' extrahiert.", vbInformation

End Sub
nicht getestet, aber sieht sehr ähnlichen aus, zu einem Code, den Ich vor ein paar Jahren per Hand und mit biologischer Intelligenz geschrieben hatte.

VG
Yal (+Gemini)
Anzeige
AW: Namen von Prozeduren auslesen
14.11.2025 11:02:24
Oberschlumpf
Hi Siegfried,

oder meinst du das hier:


Option Explicit

Sub ProzedurnamenAuslesen()
Dim vbComp As Object
Dim vbMod As Object
Dim i As Long
Dim Zeile As Long
Dim ProzedurName As String

' Zielblatt vorbereiten
Sheets("Prozeduren").Cells.Clear
Sheets("Prozeduren").Range("A1").Value = "Prozedurnamen"
Zeile = 2

' Alle Komponenten im Projekt durchlaufen
For Each vbComp In ThisWorkbook.VBProject.VBComponents
Set vbMod = vbComp.CodeModule

' Alle Prozeduren im Modul durchlaufen
For i = 1 To vbMod.CountOfLines
ProzedurName = vbMod.ProcOfLine(i, 0)
If ProzedurName > "" Then
Sheets("Prozeduren").Cells(Zeile, 1).Value = ProzedurName
Sheets("Prozeduren").Cells(Zeile, 2).Value = vbComp.Name
Zeile = Zeile + 1
' Springe zum Ende der Prozedur, um Dopplungen zu vermeiden
i = vbMod.ProcStartLine(ProzedurName, 0) + vbMod.ProcCountLines(ProzedurName, 0)
End If
Next i
Next vbComp

MsgBox "Fertig! Alle Prozedurnamen wurden eingetragen."
End Sub


Hinweis: Damit der Zugriff auf den VBA-Projektcode funktioniert, muss in Excel unter Datei → Optionen → Trust Center → Einstellungen für den Zugriff auf das VBA-Projektmodell das Häkchen gesetzt sein

Hilfts?

Ciao
Thorsten
Anzeige
AW: Namen von Prozeduren auslesen
14.11.2025 19:52:15
Siegfried
Hi Thorsten,

leider erhalte ich bei Deinem Code eine Fehlermeldung.
Bei der Zeile:
" For Each vbComp in ThisWorkbook.VBProject.VBComponents"
erscheint die Meldung, dass die Methode fehlgeschlagen ist.
das liegt vermutlich an meiner Office Version LTSC Standard 2024

Deinen Hinweis auf die Einstellung im Trust Center finde ich bei mir nicht,
da gibt es keine Option für einen Zugriff auf "VBA Projektmodell"
aber ich hege den Verdacht, dass das Häkchen bei "Microsoft Office Abfragedateien" den gleichen Effekt hat.

Weist Du Rat?

Gruß
Siegfried

PS:
Hi Daniel, bei Deinem Vorschlag erhalte ich die gleiche Fehlermeldung.
Hi Yal, bei Deinem Vorschlag kommt noch hinzu, dass die Variablen
As VBIDE.VBComponet und
As VBIDE.CodeModule
bei mir nicht vorhanden sind.
Anzeige
AW: Namen von Prozeduren auslesen
14.11.2025 20:37:12
Oberschlumpf
Hi Siegfried

mit dem 1. Versuch meines Codes erhielt ich die Fehlermeldung (so ähnlich), dass dem VBA-Projekt vertraut werden muss.
Nachdem ich den entsprechenden Haken im Trustcenter gesetzt habe, und den Code ein 2. Mal startete, kam noch der Fehler, dass das Arbeitsblatt "Prozeduren" nicht gefunden werden kann - na klar = mein Fehler! :-) meine Testdatei hatte ja noch gar kein Arbeitsblatt mit dem Namen.

Also eins der Blattnamen in "Prozeduren" geändert, den Code ein 3. Mal gestartet = funktioniert tadellos!
Hier ein Bsp-Bild:

Userbild

Im Bild siehst du nur 30 Einträge. Aber die Datei, in der in den Code getestet habe, zeigt 87 Treffer an. Ich hab jetzt nich all meine Makros gezählt, glaube aber dem Code, dass alles so stimmt ;-)

In Spalte A stehen die Namen aller Subs und Functions, in Spalte B steht der Ort im VBE, wo die Makros jeweils gespeichert sind...z Bsp "DieseArbeitsmappe", "Modul1", usw.

Ob der Grund, wieso der Code bei dir nicht funktioniert, an Office Version LTSC Standard 2024 liegt, kann ich nicht beurteilen, weil ich deine Version nicht kenne - ich nutze übrigens Office 2016 = also ganz dolle alt schon :-)

Und wo genau in deiner Version die Option "dem VBA-Projekt vertrauen" zu finden ist, oder ob überhaupt vorhanden, kann ich dir auch nicht beantworten, weil...genau...du ahnst es...ich kenne deine Version nicht ;-)

Ciao
Thorsten
Anzeige
AW: Namen von Prozeduren auslesen
14.11.2025 20:39:43
Oberschlumpf
hmm....1 Idee hab ich noch.

Verwendest du einen Windows-Computer, oder einen Apple-Computer?
Wenn Apple, dann gaaanz vielleicht liegt es daran, weil ich immer wieder mal lese, dass bestimmter VBA-Code in MacOS nicht funktioniert.

Aber diese, meine Angabe ist ohne Gewähr - einfach nur eine Idee, ein Gedanke :-)
Anzeige
AW: Namen von Prozeduren auslesen
15.11.2025 12:22:47
Oberschlumpf
hi, du musst mir nich antworten, aber es wäre schön(er), wenn du es vllt doch noch tun würdest...
AW: Namen von Prozeduren auslesen
15.11.2025 12:41:22
Siegfried
Hi Thorsten,

ich bin noch nicht am Ziel.
Ich habe neben Deinem Vorschlag auch die Vorschläge von Daniel und Yal versucht, aber immer erhalte ich eine Fehlermeldung.
Bei Yal kommt hinzu, dass die Variablen VBIDE.VBComponent und VBIDE.CodeModule bei mir (Office LTSC Standard 2024) nicht verfügbar sind.

Ich hoffe weiter auf Hilfe bis dahin

Gruß
Siegfried
Anzeige
AW: Namen von Prozeduren auslesen
15.11.2025 13:41:59
Oberschlumpf
hmm Siegfried??

Liest du denn auch wirklich alle meine Fragen?
Ich fragte, ob du n Win- oder Apple-PC nutzt?

Ciao
Thorsten
AW: Namen von Prozeduren auslesen
17.11.2025 10:56:27
Piet
Hallo Siegfried

hast du es mal mit meiner Datei versucht? Zuerst deinen Ordner auflisten.
Cursor auf eine Datei setzen, "Ja" in Zelle F2 löschen und Button Mappe auflisten drücken.
Wenn es klappt listet er nur alle Module und Makros aus dieser selektierten Datei auf.

mfg Piet
Anzeige
AW: Namen von Prozeduren auslesen
15.11.2025 14:03:54
Siegfried
Hi Thorsten,

Sorry, ich nutze Windows

Gruß
Siegfried

Kommentare im Code?
15.11.2025 14:10:17
RPP63
Moin!
Hast Du die Hinweise auf das Einbinden eines Verweises gelesen?

Gruß Ralf
AW: Kommentare im Code?
15.11.2025 15:02:53
Siegfried
Hi Ralf,

ja, die Hinweise habe ich gelesen,
aber ich weiß nicht, wie das meine Frage beantwortet.
Von Oppawinni habe ich den Hinweis auf die Option erhalten und umgesetzt.

Gruß
Siegfried
Anzeige
AW: Namen von Prozeduren auslesen
14.11.2025 20:48:15
Oppawinni
Bester Siegfried,

Der Code von Yal erfordert,
a) dass du (wie im Code beschrieben) den Verweis auf 'Microsoft Visual Basic for Applications Extensibility 5.3' setzt. Du weißt wie das geht?
b) dass du in Datei - Optionen - Trust Center - Einstellungen für das Trust Center - Macro Einstellungen die Option 'Zugriff auf das VBA-Projektmodell vetrauen' aktivierst.

Suche und du wirst finden.
Anzeige
AW: Namen von Prozeduren auslesen
14.11.2025 20:56:24
Siegfried
Hi Oppawinni,

nein,
ich weiß nicht wie ich den Verweis auf 'Microsoft Visual Basic for Applications Extensibility 5.3' setzen muss.

Vielleicht kannst Du es mir verraten?

Gruß
Siegfried
AW: Namen von Prozeduren auslesen
14.11.2025 21:02:48
Oppawinni
Hallo Siegfried.

Im VBA Editor : Extras - Verweise
Da musst du halt runter scrollen, bis zu dem entsprechenden Verweis und den aktivieren.
Anzeige
AW: Namen von Prozeduren auslesen
14.11.2025 23:54:42
Siegfried
Hi Oppawinni,

bei Microsoft Office LTSC Standard 2024 gibt es kein "Extras"
und auch keine Variable "VBIDE.VBComponent" oder "VBIDE.CodeModule"

So komme ich leider nicht ans Ziel.
Kennst Du eine Alternative?

Gruß
Siegfried



AW: Namen von Prozeduren auslesen
15.11.2025 00:11:41
Oppawinni
Ach Siegfried,
das gibt es schon
Welche Menüpunkte hast du denn im VBA Editor neben debuggen?
Anzeige
AW: Namen von Prozeduren auslesen
15.11.2025 12:16:01
Siegfried
Hi Oppawinni

ich habe im VBA Editor die Option: 'Microsoft Visual Basic for Applications Extensibility 5.3' gefunden und das Häkchen gesetzt.
Im Ergebnis erhalte ich aber weiterhin die Fehlermeldung.

Außerdem sind Häkchen nur noch bei folgenden Optionen gesetzt:
Visual Basic For Applications
Microsoft Excel 16.0 Objekt Library
OLE Automation
Microsoft Office 16.0 Objekt Library

Müssen noch weitere Optionen gesetzt werden?

Gruß
Siegfried

Anzeige
AW: Namen von Prozeduren auslesen
15.11.2025 12:34:36
Oppawinni
Also Siegfried,
vermutlich hast du noch immer die Einstellung im Trustcenter nicht gesetzt.
Junge, ich habe Krebs und mir ist meine Restlebenszeit zu schade, dir jeden Furz zehnmal zu erklären.
Immerhin weißt du jetzt, wie man Verweise setzt. Das reicht mir. Ich bin jetzt raus.
AW: Namen von Prozeduren auslesen
15.11.2025 16:38:45
Siegfried
Hi Oppawinni,

Ich hatte zu meiner Anfrage 3 Code Vorschläge bekommen,
der von Yal "Sub ProzedurDefinitionenExtrahieren" funktioniert weiterhin nicht
der von Thorsten "Sub ProzedurnamenAuslesen" funktioniert Dank Deiner Hinweise und
der von Daniel "Sub Prozeduren_Auflisten" funktioniert ebenfalls Dank Deiner Hinweise.

Kann sein, dass Du genervt bist, aber meine Kenntnisse in VBA sind eben sehr bescheiden.

Danke für Deine Hilfe und Gruß
Siegfried

Anzeige
AW: Namen von Prozeduren auslesen
14.11.2025 11:47:24
daniel
Hi
der folgende Code listet alle Prozeduren (Sub) in der Datei im Tabellenblatt "Tabelle1"

Sub Prozeduren_Auflisten()

Dim M
Dim txt As String
Dim i As Long
For Each M In ThisWorkbook.VBProject.VBComponents
With M.codemodule
For i = 1 To .countoflines
txt = .Lines(i, 1)
If txt Like "*Sub *(*)" Then
With Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = M.Name
.Offset(1, 1).Value = txt
End With
End If
Next
End With
Next

End Sub


Gruß Daniel
Anzeige
AW: Namen von Prozeduren auslesen
15.11.2025 15:22:11
Siegfried
Hi Daniel,

mit den Hinweisen von Thorsten (Oberschlumpf) zu Einstellungen im Trust-Center

funktioniert Dein Code.

Vielen Dank und Gruß
Siegfried
AW: Namen von Prozeduren auslesen
14.11.2025 09:04:03
Piet
Hallo

du möchtest nur Module auflisten??? Da habe ich eine uralte Kamelle im Angebot!
Nicht optimal, noch alte Programmierung, funktioniert aber einwandfrei. (meistens!)
Man liste einen ganzen Ordner auf, und lade sich alle Dateien mit allen Makros in Tabelle2.
Steht in Zelle F2 "Ja" wird jede Datei automatisch aufgelistet und in Tabelle2 kopiert.
Vielleicht auch für Kollegen brauchbar.

Besonderheit: das Programm erkennt auch alte Excel 7 und -LibreOffice Dateien-
Libre Office sind KEINE Excel Original Dateien! Erkennbar im VBA Editor an "grünen" Tabellen.
Entwickelt um Makros der alten Excel 7 Files aufzulisten. Und Dateien auf Libre Office zu prüfen.
https://www.herber.de/bbs/user/179628.xls

mfg Piet
Anzeige
AW: Namen von Prozeduren auslesen
14.11.2025 01:53:48
Siegfried
Hi Onur,

Der kleine Scherz "mit ich bin zu faul" ging bei Dir daneben.
Ich hätte auch fragen können, ob jemand eine Methode kennt, mit der man die Namen von Prozeduren auslesen kann.

Gruß
Siegfried

Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18