Makro-/VBA-Code zum Auflisten und Drucken von Namen und Code aller Makros in einer Arbeitsmappe

Makro-/VBA-Code zum Auflisten und Drucken von Namen und Code aller Makros in einer Arbeitsmappe

Ich verwende Excel 2007. Für diese Frage lautet der Name meiner Arbeitsmappe PrintCode.xlsm

Gibt es ein Makro oder einen VBA-Code, der alle Makronamen und den Code in der geöffneten Arbeitsmappe druckt?

Ich habe im Internet einige Beispiele gefunden, aber keines scheint zu funktionieren?

Antwort1

Ich habe das hier gefunden, es sieht so aus, als ob es das ist, was Sie brauchen:So rufen Sie die Namen von Makros aus einer Excel-Arbeitsmappe mithilfe von Visual Basic 6.0 ab:

Definieren Sie eine Click-Eventhandlerprozedur für die Schaltfläche. Verwenden Sie für diese Prozedur den folgenden Code, um Informationen zu den Makros anzuzeigen, die in C:\Abc.xls definiert sind:

Private Sub Command1_Click()
    ' Declare variables to access the Excel workbook.
    Dim objXLApp As Excel.Application
    Dim objXLWorkbooks As Excel.Workbooks
    Dim objXLABC As Excel.Workbook

    ' Declare variables to access the macros in the workbook.
    Dim objProject As VBIDE.VBProject
    Dim objComponent As VBIDE.VBComponent
    Dim objCode As VBIDE.CodeModule

    ' Declare other miscellaneous variables.
    Dim iLine As Integer
    Dim sProcName As String
    Dim pk As vbext_ProcKind

    ' Open Excel, and open the workbook.
    Set objXLApp = New Excel.Application
    Set objXLWorkbooks = objXLApp.Workbooks    
    Set objXLABC = objXLWorkbooks.Open("C:\ABC.XLS")

    ' Empty the list box.
    List1.Clear

    ' Get the project details in the workbook.
    Set objProject = objXLABC.VBProject

    ' Iterate through each component in the project.
    For Each objComponent In objProject.VBComponents

        ' Find the code module for the project.
        Set objCode = objComponent.CodeModule

        ' Scan through the code module, looking for procedures.
        iLine = 1
        Do While iLine < objCode.CountOfLines
            sProcName = objCode.ProcOfLine(iLine, pk)
            If sProcName <> "" Then
                ' Found a procedure. Display its details, and then skip 
                ' to the end of the procedure.
                List1.AddItem objComponent.Name & vbTab & sProcName
                iLine = iLine + objCode.ProcCountLines(sProcName, pk)
            Else
                ' This line has no procedure, so go to the next line.
                iLine = iLine + 1
            End If
        Loop
        Set objCode = Nothing
        Set objComponent = Nothing
    Next

    Set objProject = Nothing

    ' Clean up and exit.
    objXLABC.Close
    objXLApp.Quit
End Sub

verwandte Informationen