1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| Sub Test()
'Nécessite d'activer la référence
'"Visual basic For Application Extensibility 5.3"
'
Debug.Print recupereContenuMacro(Workbooks("Money.xlam"), "Module1", "Test")
Debug.Print recupereContenuMacro(Workbooks("Money.xlam"), "Module1", "uneProcedure")
Function recupereContenuMacro(Wb As Workbook, Mdl As String, NomMacro As String)
Dim Debut As Integer, Fin As Integer, i As Integer
Dim Ligne As Integer, x As Integer
Dim strVar As String, strVar2 As String
Dim Espace As String
Ligne = 10
Espace = " "
With Wb.VBProject.VBComponents(Mdl).CodeModule
Debut = .ProcStartLine(NomMacro, vbext_pk_Proc)
Fin = .ProcCountLines(NomMacro, vbext_pk_Proc) + Debut
For i = Debut To Fin
'Resultat = Resultat & .Lines(i, 1) & vbCr
strVar = .Lines(i, 1)
strVar2 = Replace(Trim(.Lines(i, 1)), " ", "")
If Left(strVar2, 3) = "Sub" Or _
Left(strVar2, 6) = "EndSub" Or _
Left(strVar2, 7) = "ExitSub" Or _
Left(strVar2, 10) = "PrivateSub" Or _
Left(strVar2, 9) = "PublicSub" Or _
Left(strVar2, 8) = "Function" Or _
Left(strVar2, 11) = "EndFunction" Or _
Left(strVar2, 15) = "PrivateFunction" Or _
Left(strVar2, 14) = "PublicFunction" Or _
Left(strVar2, 3) = "Rem" Or _
Left(strVar2, 1) = "'" Or _
Len(Left(strVar2, 1)) = 0 Or _
Left(strVar2, 3) = "Dim" Or _
Left(strVar2, 10) = "ErrHandle:" Or _
Left(strVar2, 8) = "Handler:" Then
strVar = Espace & strVar
Else
'Debug.Print Left(strVar2, 1)
strVar = Ligne & Espace & strVar
Ligne = Ligne + 1
End If
Debug.Print strVar
Next
End With
End Function |
Partager