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

Makrotext, aller Makros auflisten

Forumthread: Makrotext, aller Makros auflisten

Makrotext, aller Makros auflisten
05.03.2015 18:53:15
Dieter(Drummer)
Guten Abend an alle,
ich habe hier ein Makro , aus dem Forum, von Nepumuk, dass alle Makros einer Mappe auflistet, aber nicht den Makrotext.
Meine Bitte, kann man das Makro so erweitern, oder ein neues erstellen, dass auch die Makros selbst, also der VBA Text, ebenfalls in der aktien Tabelle dazu aufgelistet wird?
Wäre schön, wenn das möglich wäre.
Hier das bisherge Makro von Nepumuk, dass schon prima geht, nur der Makrotext ist nicht da:
  • 
    Sub MakroListe()
    Dim vbc As Object, iRow As Integer, iCol As Integer, iCounter As Integer, sMacro As  _
    String
    Cells.Clear
    Rows(1).Font.Bold = True
    For Each vbc In ThisWorkbook.VBProject.VBComponents
    iRow = 1
    iCol = iCol + 1
    Cells(iRow, iCol).Value = vbc.Name
    Debug.Print vbc.Type
    With vbc.CodeModule
    For iCounter = 1 To .CountOfLines
    If .ProcOfLine(iCounter, 0) > "" Then
    sMacro = .ProcOfLine(iCounter, 0)
    If sMacro  Cells(iRow, iCol) Then
    iRow = iRow + 1
    Cells(iRow, iCol).Value = sMacro
    End If
    End If
    Next iCounter
    End With
    Next vbc
    Columns.AutoFit
    End Sub
    

  • Mit Gruß und Dank für evtl. Hilfe,
    Dieter(Drummer)

    Anzeige

    8
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    nur mal ne Frage...
    05.03.2015 19:09:52
    Oberschlumpf
    Hi Dieter
    Wenn ich dein Anliegen richtig verstanden habe, möchtest du den kompletten VBA-Code in die Excel-Tabelle schreiben.
    Warum machst du das dann nihct mit Copy + Paste?
    Oder hab ich es nicht richtig verstanden?
    Ciao
    Thorsten

    AW: nur mal ne Frage...
    05.03.2015 19:21:25
    Dieter(Drummer)
    Hi Thorsten,
    Danke für deine Rückmeldung.
    Es sind z.B. 17 Module mit diversen Makros. Ich möchte einfach alle Makros mit Makronamen, evtl. Zugehörigkeit zu einer bestimmten Tabelle und den Makrotext auflisten. Das kann ich natürlich auch manuell machenn aber per VBA wäre es doch wesentlich effektiver.
    Ich bin nicht in VBA so fit, um das Makro zu erstellen.
    Gruß,
    Dieter(Drummer)

    Anzeige
    Lines-Eigenschaft vom CodeModule-Objekt
    05.03.2015 19:47:51
    ransi
    HAllo Dieter,
    Wenn du die Zeilen einzeln auslesen willst, brauchst du noch die Lines-Eigenschaft des CodeModule Objektes.
    Teste mal in diese Richtung:
    Option Explicit



    Sub MakroListe()
        Dim vbc As Object, iRow As Integer, iCounter As Integer
        Cells.Clear
        iRow = 1
        For Each vbc In ThisWorkbook.VBProject.VBComponents
            iRow = iRow + 1
            Cells(iRow, 1).Value = vbc.Name
            
            With vbc.CodeModule
                For iCounter = 1 To .CountOfLines
                    If .Lines(iCounter, 1) <> "" Then
                        iRow = iRow + 1
                        Cells(iRow, 1) = .Lines(iCounter, 1)
                    End If
                Next iCounter
            End With
            iRow = iRow + 1
        Next vbc
        Columns.AutoFit
    End Sub


    ransi

    Anzeige
    AW: Eine schnelle und prima Lösung
    05.03.2015 19:58:59
    Dieter(Drummer)
    Hi Ransi,
    Danke für deine Lösung, die prima funktioniert und die Makros blitzschnell auflistet.
    Einen schönen Abend noch und Danke.
    Gruß,
    Dieter(Drummer)

    AW: Eine schnelle und prima Lösung
    05.03.2015 23:09:45
    Luschi
    Hallo Dieter,
    ich schmeiße bei meiner Lösung alle überflüssigen Leerzeilen raus und jeden Modul schreibe ich _ in die Nachbarspalte:
    
    Sub MakroListe()
    Dim ws As Worksheet, vbc As Object, _
    iRow As Long, iCol As Integer, sMacro As String
    Dim n1 As Long, n2 As Long, n3 As Long
    Set ws = ThisWorkbook.Sheets.Add
    ws.Cells.Clear
    iCol = 0
    For Each vbc In ThisWorkbook.VBProject.VBComponents
    Debug.Print vbc.name
    iRow = 1
    iCol = iCol + 1
    With vbc.CodeModule
    With ws.Cells(iRow, iCol)
    .Value = vbc.name
    .Font.Bold = True
    .Font.Italic = True
    .name = "Calibri"
    .Font.Size = 14
    End With
    n1 = 1
    n2 = vbc.CodeModule.CountOfLines
    For n3 = n1 To n2
    sMacro = vbc.CodeModule.Lines(n3, 1)
    If Trim(sMacro)  "" Then
    'keine Leerzeilen
    ws.Cells(iRow, iCol).Value = sMacro
    iRow = iRow + 1
    If InStr(1, sMacro, "End Sub", vbTextCompare) > 0 Then
    iRow = iRow + 1
    ElseIf InStr(1, sMacro, "End Function", vbTextCompare) > 0 Then
    iRow = iRow + 1
    ElseIf InStr(1, sMacro, "End Property", vbTextCompare) > 0 Then
    iRow = iRow + 1
    Else
    End If
    End If
    Next n3
    End With
    Next vbc
    ws.Columns.AutoFit
    Set ws = Nothing
    Set vbc = Nothing
    MsgBox "F e r t i g!", 48 + vbSystemModal, "Hurra..."
    End Sub
    
    Gruß von Luschi
    aus klein-Paris

    Anzeige
    AW: Auch eine prima Lösung
    06.03.2015 09:06:40
    Dieter(Drummer)
    Guten Morgen Luschi,
    Sorry, dass ich mich jetzt erst melde. Deine Lösung ist auch perfekt und kann ich ebenfalls gut verwenden.
    Gruß und einen schönen Tag,
    Dieter(Drummer)

    Reicht nicht die VBE-Export-Fktionalität, ...
    05.03.2015 19:56:30
    Luc:-?
    …Dieter;
    dabei wird auch der Name des Moduls in dieser Form angegeben: Attribute VB_Name = "FXmodul6"
    Ansonsten müsstest du mal im VBProjekt einen Verweis auf die MS VBA Extensibility 5.3 setzen und die VBA-Export-Methode durchsehen, damit das alles ggf in einer Mappe mit QuellMappenName zusammen­gefasst wdn kann. Alternativ könntest du natürlich auch AddIns mit den allgemein anwendbaren Codes anlegen, was EreignisProzeduren der einzelnen Mappen grdsätzlich ausschließen dürfte.
    Gruß, Luc :-?

    Anzeige
    AW: Reicht nicht die VBE-Export-Fktionalität, ...
    05.03.2015 20:04:02
    Dieter(Drummer)
    Hi Luc :-?,
    Danke für deine Rückmeldung und Infos. Dies übersteigt meinen Wissensstand über VBA.
    Gruß und Danke,
    Dieer(Drummer)
    Anzeige
    Anzeige

    Infobox / Tutorial

    Alle Excel-Makros auflisten und den Makrotext anzeigen


    Schritt-für-Schritt-Anleitung

    Um alle Excel-Makros anzuzeigen und zusätzlich den entsprechenden Makrotext in einer Tabelle aufzulisten, kannst du das folgende VBA-Makro verwenden. Dieses Skript wurde von Benutzern aus dem Forum optimiert und bietet eine effektive Möglichkeit, alle Makros in deinem Excel-Dokument aufzulisten.

    1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
    2. Wähle im Menü Einfügen die Option Modul, um ein neues Modul zu erstellen.
    3. Füge den folgenden Code in das Modul ein:
    Sub MakroListe()
        Dim ws As Worksheet, vbc As Object
        Dim iRow As Long, iCol As Integer, sMacro As String
        Dim n1 As Long, n2 As Long, n3 As Long
        Set ws = ThisWorkbook.Sheets.Add
        ws.Cells.Clear
        iCol = 0
        For Each vbc In ThisWorkbook.VBProject.VBComponents
            iRow = 1
            iCol = iCol + 1
            With vbc.CodeModule
                ws.Cells(iRow, iCol).Value = vbc.Name
                iRow = iRow + 1
                n1 = 1
                n2 = .CountOfLines
                For n3 = n1 To n2
                    sMacro = .Lines(n3, 1)
                    If Trim(sMacro) <> "" Then
                        ws.Cells(iRow, iCol).Value = sMacro
                        iRow = iRow + 1
                    End If
                Next n3
            End With
        Next vbc
        ws.Columns.AutoFit
        Set ws = Nothing
    End Sub
    1. Schließe den VBA-Editor und kehre zu Excel zurück.
    2. Drücke ALT + F8, wähle MakroListe und klicke auf Ausführen.

    Jetzt werden alle Makros samt ihrem VBA-Code in einer neuen Arbeitsblatt-Tabelle angezeigt.


    Häufige Fehler und Lösungen

    • Fehler: "Komponenten sind nicht sichtbar"

      • Stelle sicher, dass du in den Excel-Optionen die VBA-Projekt-Objektbibliothek aktiviert hast. Gehe dazu unter Datei -> Optionen -> Erweitert und aktiviere die Option "VBA-Projekt-Objektbibliothek vertrauen".
    • Fehler: "Das Makro kann nicht ausgeführt werden"

      • Überprüfe, ob die Makros in den Excel-Sicherheitseinstellungen aktiviert sind. Gehe zu Datei -> Optionen -> Trust Center -> Einstellungen für das Trust Center -> Makroeinstellungen und aktiviere die Option "Alle Makros aktivieren".

    Alternative Methoden

    Wenn du Excel-Makros erstellen und auflisten möchtest, ohne VBA zu verwenden, kannst du auch die integrierte "Aufzeichnen"-Funktion verwenden. Sie ermöglicht es dir, eine Aufzeichnung deiner Aktionen in Excel zu erstellen und den entsprechenden VBA-Code zu generieren. Allerdings kannst du mit dieser Methode den Makrotext nicht direkt auflisten.


    Praktische Beispiele

    Ein häufiges Beispiel für die Verwendung von VBA in Excel ist das Erstellen von Berichten. Wenn du beispielsweise regelmäßig Daten aus verschiedenen Quellen in Excel zusammenführst, kannst du ein Makro schreiben, das diese Daten automatisch importiert und formatiert.

    Hier ist ein einfaches Beispiel, um alle Makros in einem bestimmten Arbeitsblatt aufzulisten:

    Sub ListeMakros()
        Dim i As Integer
        For i = 1 To Application.MacroOptions.Count
            Debug.Print Application.MacroOptions(i).Macro
        Next i
    End Sub

    Tipps für Profis

    • Nutze den Debug.Print Befehl, um während der Entwicklung und Fehlersuche Ausgaben im Direktfenster anzuzeigen.
    • Verwende die Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden, die durch Tippfehler entstehen können.
    • Experimentiere mit den With-Anweisungen, um den Code übersichtlicher und lesbarer zu gestalten.

    FAQ: Häufige Fragen

    1. Wie kann ich ein Excel-Makro erstellen? Um ein Excel-Makro zu erstellen, öffne den VBA-Editor mit ALT + F11, füge ein Modul hinzu und schreibe deinen VBA-Code.

    2. Wie kann ich alle Excel-Makros anzeigen? Mit dem oben beschriebenen Makro kannst du alle Excel-Makros und deren Texte in einer neuen Tabelle auflisten.

    3. Was sind die Vorteile von VBA in Excel? VBA ermöglicht es dir, komplexe Aufgaben zu automatisieren, wiederkehrende Prozesse zu vereinfachen und benutzerdefinierte Funktionen zu erstellen.

    4. Wie kann ich Makros in Excel sicher verwenden? Aktiviere nur Makros aus vertrauenswürdigen Quellen und stelle sicher, dass die Sicherheitsoptionen in Excel entsprechend konfiguriert sind.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige