leonchou
論壇維護群
離線
文章: 1160
|
這問題問的好,了解VBComponents的結構也可做為類似問題的基礎。 注意事項 -- 1. 以下要處理的Workbook必須已開啟。 2. 我不確定是否可列出Properties程序,你可試試。
Sub list_MyCodes() r = 2 [A1:D1] = Array("種類", "程序名", "位置(模組)", "行數") Set wb = Workbooks("tvprogram.xls") '要處理的Workbook For Each VBC In wb.VBProject.VBComponents With VBC.CodeModule startLine = .CountOfDeclarationLines + 1 '由宣告區之後開始 While startLine + numLines < .CountOfLines procName = .ProcOfLine(startLine, vbext_pk_Proc) numLines = .ProcCountLines(procName, vbext_pk_Proc) line1 = .Lines(.ProcBodyLine(procName, vbext_pk_Proc), 1) procType = Replace(Replace(Left(line1, InStr(line1, procName) - 2), _ "Private ", ""), "Public ", "") Cells(r, 1) = procType Cells(r, 2) = procName Cells(r, 3) = VBC.Name Cells(r, 4) = numLines startLine = startLine + numLines r = r + 1 Wend End With Next End Sub
註: ProcStartLine 和 ProcBodyLine屬性可能會令人混淆,故說明如下-- ProcStartLine:若該程序名稱上方含有註解,會傳回第一行註解的行號。 ProcBodyLine:始終傳回程序名稱所在那一行的行號。
|