Voici mon code:macros Lire fichier externe rapidement
For Each pj In wdApp.Application.VBE.VBProjects
x = pj.FileName
y = pj.Protection
If x <> "" Then
If y <> "1" Then
For Each vbcomp In pj.VBComponents
For i = 1 To vbcomp.CodeModule.CountOfLines
newMacro = vbcomp.CodeModule.ProcOfLine(Line:=i, prockind:=vbext_pk_Proc)
If curMacro <> newMacro Then
curMacro = newMacro
cboMacros.AddItem (curMacro)
Debug.Print curMacro
Else: newMacro = Null
End If
Next
Next
End If
Selection.InsertAfter vbCr
End If
x = ""
Next
Selection.Collapse wdCollapseEnd
End Sub
Le problème est que je peux retourner le nom de toutes les macros dans un fichier associé, mais il est terriblement inefficace. Cela prend @ 2 minutes pour 85 noms de macros. C'est parce que le programme lit chaque ligne de chaque module (CountOfLines). J'espérais juste qu'il pourrait y avoir de la magie qui pourrait être exécutée dans mon autre déclaration. Si la macro actuelle est la même que newmacro, passez juste à quand ils sont différents. Je ne suis pas sûr que ce soit possible. Sinon, existe-t-il une meilleure méthode à utiliser que CountOfLines?