Одна из проблем, с которой вы столкнулись, заключается в том, что ProcKind является выходом, а не входом, поэтому сначала вам нужно создать переменную, подобную этой:
Dim ProcKind As VBIDE.vbext_ProcKind
Тогда ваше утверждение будет
newMacro = vbcomp.CodeModule.ProcOfLine(Line:=i, prockind)
Реальный ответ заключается в том, что вам не нужно проходить каждую строку, вы можете перейти от proc к proc:
For Each vbcomp In pj.VBComponents
With vbcomp.CodeModule
myStartLine = .CountOfDeclarationLines + 1
While myStartLine < .CountOfLines
newMacro = .ProcOfLine(i,prockind)
numLines = .ProcCountLines(newMacro,vbext_pk_Proc)
If curMacro <> newMacro Then
curMacro = newMacro
cboMacros.AddItem (curMacro)
Debug.Print curMacro
Else: newMacro = Null
End If
myStartLine = myStartLine + numLines
Wend
End With
Next