vba code refactoring - il des outils pour les aider? [fermé]

j'essaie de reformuler mon code VBA. Je suis tellement habitué à utiliser refactoring dans les IDEs basées sur Java depuis un certain nombre d'années. VBA editor supporte-t-il tout remaniement ou y a-t-il des add-ins? MZ Tools ne disposait pas d'une telle fonctionnalité.

je veux être capable de faire au moins les éléments suivants: 1. Renommer les variables 2. Split Procédures en sous-procédures pour rendre le code plus lisible 3. Changer la portée de la variable de global à procedure et vice-versa

22
demandé sur Community 2012-10-04 14:23:38

4 réponses

Avertissement: je suis très impliqué dans ce projet.


Rubberduck est un add-in open-source pour le VBA IDE sous [very] active development, qui inclut cette fonctionnalité.

la Version 1.2 inclut un Méthode D'Extraction outil de reconfiguration:

extract method refactoring

la Version 1.3 inclut un Renommer refactoring:

rename refactoring

version 2.0 (beta disponible, toujours en stabilisation) comprend une douzaine de remaniements:

Rubberduck 2.0 refactorings

  • Introduire Le Paramètre favorise une variable locale à un paramètre
  • Introduire Un Champ favorise une variable locale à la portée du module
  • Encapsuler Champ transforme un champ public en la propriété
  • rapprochez-vous de l'Utilisation de déplace un champ qui n'est utilisé que dans 1 procédure, dans cette procédure. Ou déplace une variable locale immédiatement au-dessus de sa première utilisation.
  • Extrait De L'Interface vous permet de choisir les membres de classe à extraire dans une interface, crée de nouveaux modules de classe avec des talons pour eux, et fait la classe d'origine implémenter l'interface extraite.
  • Implémenter L'Interface crée stubs pour tous les membres d'une interface non implémentée, donc vous n'avez pas besoin de les créer manuellement en les sélectionnant un par un dans le menu déroulant du volet de code:

    Implements IClass1
    
    Public Sub IClass1_DoSomething()
        Err.Raise 5 'TODO implement interface member
    End Sub
    
    Public Function IClass1_GetFoo() As Integer
        Err.Raise 5 'TODO implement interface member
    End Function
    
    Sub DoSomething()
    
    End Sub
    
    Function GetFoo() As Integer
    
    End Function
    

D'autres outils de remaniement sont sur la feuille de route du projet, que vous pouvez suivre sur GitHub.

22
répondu Mathieu Guindon 2016-06-29 13:33:33

le seul outil de "reconfiguration" que je connaisse en VBA est Ctrl+F et Ctrl+R.

2
répondu user1701047 2012-10-18 17:06:20

j'utilise des V-Tools pour le travail de remaniement comme il trouvera / remplacera dans les objets, pas seulement du code VBA. http://www.skrol29.com/us/vtools.php

2
répondu KFleschner 2012-10-25 15:14:51

Oui, il est.... presque

Dans le bon vieux temps, j'ai utilisé celui-ci. http://www.moshannon.com/speedferret.html

m'a beaucoup aidé et je pense que j'ai les disques 3.5" quelque part ;)

le truc est de copier votre code excel vers Access ou VB6 et d'y faire votre remaniement. Remplacer la portée: la solution consiste à nommer de façon créative et à utiliser remplacer. procédures de crachats... c'est un manuel.je suis désolé.

cela n'en vaut généralement pas la peine à moins que vous avoir un certain Code excel VBA sérieux, je recommande de convertir la plupart d'entre eux en c# ou VB.Net dll où vous pouvez faire le remaniement, le test et un peu de magie moderne et seulement faire aussi peu que vous pouvez en VBA.

2
répondu Archlight 2012-12-17 14:40:28