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

626
Kenny

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

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

Ich habe ein paar Beispiele im Web gefunden, aber es scheint, dass keiner funktioniert.

0
Sie möchten also alle VBA in der XLSM in ein Dokument extrahieren / ausdrucken? Zu welchem ​​Zweck darf ich fragen? spikey_richie vor 5 Jahren 0
Wenn es auch meinen VBA-Code (Nicht-Makro-Code) auflisten könnte, wäre das sehr hilfreich Kenny vor 5 Jahren 0
spikey-richie: Ich erstelle ein komplexes Arbeitsblatt mit mehr als 26 Makros und verschiedenen VBA-Codes. Ich finde, ich werde durch das, was ich bereits getan habe, verwirrt und eine Liste der Namen zusammen mit dem Code wäre eine große visuelle Hilfe. Kenny vor 5 Jahren 0

1 Antwort auf die Frage

0
duDE

Ich habe dieses gefunden, schauen Sie, wie es ist, was Sie brauchen: So rufen Sie die Namen von Makros aus einer Excel-Arbeitsmappe ab, indem Sie Visual Basic 6.0 verwenden :

Definieren Sie eine Click-Ereignisbehandlungsprozedur für die Schaltfläche. Verwenden Sie den folgenden Code für dieses Verfahren, um Informationen zu den in C: \ Abc.xls definierten Makros anzuzeigen:

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