Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1412to1416
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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)

    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)

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige