VBA Tipp: Alle Funktionen und Subs in einem Modul ermitteln

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte die Namen der Funktionen und Subs in einem Modul herausfinden.

Lösung

Die folgende Funktion gibt beispielhaft eine Liste der Funktionsnamen im Testfenster aus. (Zum Thema "Split-Funktion unter Access 97" siehe: Access 2000 String-Funktionen in Access 97 nutzen):

Public Function ListAllFunctionsInModule(Mdl As Module)
Dim Lin As String, w, I As Long, J As Long
 
  For I = 1 To Mdl.CountOfLines
    Lin = Mdl.Lines(I, 1)
    If Lin <> "" Then
      w = Split(Lin, " ")
      If w(0) = "Public" Or w(0) = "Private" Then
        For J = 0 To UBound(w) - 1
          w(J) = w(J + 1)
        Next J
      End If
      If w(0) = "Sub" Or w(0) = "Function" Then _
         Debug.Print Mdl.Name, Mid(w(1), 1, InStr(w(1), "(") - 1)
    End If
  Next I
End Function

Aufruf

Public Function AlleMeineFunktionen()
Dim Mdl As Module, Frm As Form, Doc As DAO.Document, _
  DB As DAO.Database, Cont As DAO.Container
 
  For Each Mdl In Modules
    ListAllFunctionsInModule Mdl
  Next Mdl
 
  Set DB = CurrentDb
  Set Cont = DB.Containers!Forms
  For Each Doc In Cont.Documents
    DoCmd.OpenForm Doc.Name, acDesign, , , , acHidden
    Set Frm = Forms(Doc.Name)
    ListAllFunctionsInModule Frm.Module
    DoCmd.Close acForm, Doc.Name, acSaveNo
  Next Doc
  Set DB = Nothing
End Function