Balayage par le code VBA d'un code VBA
Bonjour,
Je cherche à balayer un code VBA et faire sortir dans une feuille Excel tous les noms de fonctions et de procédures où apparaissent un mot clé : on error resume next.
J'espère que ma question est assez claire.
Est-ce que vous pôurriez m'aider s'il vous plait ?
Par avance merci.
Marco.
faire un export des macros
Je reviens sur le sujet après plusieurs mois... c'est peut être inutil pour toi cotmar mais ça pourrait être util pour d'autres...
Une autre solution possible, donc, pour analyser les sources: faire un export des macros. On va se retrouver avec des fichiers texte avec le contenu des macros (le code source) et ensuite on pourra faire des recherches plus classiques dans des fichiers texte (moi je le ferais en unix/linux avec cat, grep, etc).
Pour exporter les macros, on peut utiliser la fonction suivante:
Code:
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
| Sub ExporterFrmEtModules()
' Pour que ça marche, faire Excel/Outils/Options/Sécurité/Sécurité des macros/Faire confiance au projet Visual Basic
'Nécéssite d'activer la référence Microsoft Visual Basic for Applications Extensibility 5.3
Dim rep1 As String
rep1 = "sources"
rep1 = ThisWorkbook.Path + Application.PathSeparator + rep1 + Application.PathSeparator
Dim LeFich
k1 = 0
k2 = 0
k3 = 0
k4 = 0
For Each LeFich In ThisWorkbook.VBProject.VBComponents
Select Case LeFich.Type
Case 1
ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".bas"
k1 = k1 + 1
Case 2
ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".cls"
k2 = k2 + 1
Case 3
ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".frm"
k3 = k3 + 1
Case 100
ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".cls"
k4 = k4 + 1
End Select
Next
k = k1 + k2 + k3 + k4
MsgBox CStr(k) & " objets exportés dont:" & vbCrLf & _
CStr(k1) & " bas" & vbCrLf & _
CStr(k3) & " frm" & vbCrLf & _
CStr(k2 + k4) & " cls"
End Sub |