Not sure if it helps, John, but for my use I just combined the two subroutines for my own personal use (thanks you two, this could be quite useful!)

Private Sub ModuleBreakdown()
 Dim N As Integer, i As Long, T As Integer
 Dim VBC As VBComponent, sTmp As String, WB As Workbook
 Application.ScreenUpdating = False
 If ActiveWorkbook Is Nothing Then Workbooks.add Else Sheets.add after:=Sheets(Sheets.Count)
 Range("A1") = "COMPONENT NAME"
 Range("B1") = "COMPONENT TYPE"
 Range("C1") = "BOOK NAME"
 Range("D1") = "PROCEDURES"
 N = 2
 For Each VBC In ThisWorkbook.VBProject.VBComponents
  Range("A" & N) = VBC.Name
  T = VBC.Type
  If T = 1 Then Range("B" & N) = "Basic Module"
  If T = 2 Then Range("B" & N) = "Class Module"
  If T = 3 Then Range("B" & N) = "UserForm"
  If T = 11 Then Range("B" & N) = "ActiveX"
  If T = 100 Then Range("B" & N) = "Book/Sheet Class Module"
  Range("C" & N) = ThisWorkbook.Name
  With VBC.CodeModule
   i = .CountOfDeclarationLines + 1
   sTmp = ""
   Do Until i >= .CountOfLines
    Range("D" & N) = .ProcOfLine(i, vbext_pk_Proc)
    i = i + .ProcCountLines(.ProcOfLine(i, vbext_pk_Proc), vbext_pk_Proc)
    If i < .CountOfLines Then N = N + 1
   Loop
  End With
  N = N + 1
 Next
 Columns.AutoFit
 Application.ScreenUpdating = True
End Sub
Matt