Код макроса / VBA для перечисления и печати имен и кода всех макросов в рабочей книге

445
Kenny

Я использую Excel 2007. Для этого вопроса моей рабочей книгой является PrintCode.xlsm.

Существует ли код макроса или VBA, который будет печатать все имена макросов и код в открытой рабочей книге?

Я нашел несколько примеров в Интернете, но ни один из них не работает?

0
Итак, вы хотите извлечь все VBA в XLSM в документ / распечатать его? С какой целью я могу спросить? spikey_richie 5 лет назад 0
Если бы это могло также перечислить мой код VBA (не-макрос), это было бы очень полезно Kenny 5 лет назад 0
spikey-richie: я создаю сложную рабочую таблицу, которая содержит более 26 макросов и различный код VBA. Я нахожу, что меня смущает то, что я уже сделал, и наличие списка имен вместе с кодом было бы отличным наглядным пособием. Kenny 5 лет назад 0

1 ответ на вопрос

0
duDE

Я нашел этот, посмотрите, что это то, что вам нужно: Как получить имена макросов из книги Excel с помощью Visual Basic 6.0 :

Определите процедуру обработки события нажатия кнопки. Используйте следующий код для этой процедуры, чтобы отобразить информацию о макросах, определенных в C: \ Abc.xls:

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 

Похожие вопросы