Для доводки идеи Hugo о создании специальной книги с UDF и формы в ней с вызовом "любимых" Function и Sub ( ) пишу на досуге макрос, выводящий имена и размещение процедур в открытых книгах:
Sub Find_Sub()
Debug.Print "============ Sub's ============="
Call FindProc("Sub")
End Sub
Sub Find_Func()
Debug.Print "============ Function's ============="
Call FindProc("Function")
End Sub
Sub FindProc(Proc$)
Dim iWbk As Workbook, iVBComp As Object, i&
On Error GoTo ErrExit
For Each iWbk In Workbooks ' для каждой из открытых книг
For Each iVBComp In iWbk.VBProject.VBComponents ' для каждого модуля проекта
i = 1 'начиная с первой строки кода
With iVBComp.CodeModule
Do Until Not .Find(Proc & " ", i, 1, .CountOfLines, 1, , True) ' ищем в тексте модуля требуемый тип процедуры ("Sub " или "Function ")
Debug.Print iWbk.Name & vbTab & iVBComp.Name & vbTab & .ProcOfLine(i, 0)
i = i + .ProcCountLines(.ProcOfLine(i, 0), 0) ' переходим к следующей после конца процедуры строке кода
Loop
End With
Next iVBComp
Next iWbk
ErrExit:
If Err Then Debug.Print Err.Description
End Sub
Чушь какая-то получается!
Function ищет безошибочно и везде, а при попытке найти Sub выводит только из двух модулей Personal.xls, а потом вываливается в ошибку
Метод 'ProcCountLines' объекта '_CodeModule' не выполнен
Sub Find_Sub()
Debug.Print "============ Sub's ============="
Call FindProc("Sub")
End Sub
Sub Find_Func()
Debug.Print "============ Function's ============="
Call FindProc("Function")
End Sub
Sub FindProc(Proc$)
Dim iWbk As Workbook, iVBComp As Object, i&
On Error GoTo ErrExit
For Each iWbk In Workbooks ' для каждой из открытых книг
For Each iVBComp In iWbk.VBProject.VBComponents ' для каждого модуля проекта
i = 1 'начиная с первой строки кода
With iVBComp.CodeModule
Do Until Not .Find(Proc & " ", i, 1, .CountOfLines, 1, , True) ' ищем в тексте модуля требуемый тип процедуры ("Sub " или "Function ")
Debug.Print iWbk.Name & vbTab & iVBComp.Name & vbTab & .ProcOfLine(i, 0)
i = i + .ProcCountLines(.ProcOfLine(i, 0), 0) ' переходим к следующей после конца процедуры строке кода
Loop
End With
Next iVBComp
Next iWbk
ErrExit:
If Err Then Debug.Print Err.Description
End Sub
Чушь какая-то получается!
Function ищет безошибочно и везде, а при попытке найти Sub выводит только из двух модулей Personal.xls, а потом вываливается в ошибку
Метод 'ProcCountLines' объекта '_CodeModule' не выполнен
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)