vba代码重构 - 有什么工具可以帮助吗?

时间:2012-10-04 10:23:39

标签: vba excel-vba excel

我正在尝试重构我的VBA代码。我很习惯在基于Java的IDE中使用重构多年。 VBA编辑器是否支持任何重构或是否有任何加载项? MZ Tools没有任何此类功能。

我希望能够至少做到以下几点: 1.重命名变量 2.将程序拆分为子程序,使代码更具可读性 3.将变量的范围从全局更改为过程,反之亦然

4 个答案:

答案 0 :(得分:30)

  

免责声明:我参与了这个项目。

Rubberduck是[非常]活跃开发中的VBA / VB6 IDE的开源插件,包括此功能。

1.3版包含重命名重构:

rename refactoring

2.0版(测试版,仍然稳定)包括十几个重构:

Rubberduck 2.0 refactorings

  • 介绍参数将局部变量提升为参数
  • 介绍字段将局部变量提升为模块范围
  • 封装字段将公共字段转换为属性
  • 更接近使用将仅在1个过程中使用的字段移动到该过程中。或者在第一次使用之前立即移动局部变量。
  • Extract Interface 允许您选择要提取到接口中的类成员,为它们创建带有存根的新类模块,并使原始类实现提取的接口。
  • 实现接口为未实现的接口的所有成员创建存根,因此您无需通过在代码窗格下拉列表中逐个选择它们来手动创建它们: / p>

    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
    

项目的路线图(包括提取方法)中有更多重构工具,您可以在GitHub上查看。

答案 1 :(得分:2)

我在VBA中唯一知道的“重构”工具是Ctrl + F和Ctrl + R.

答案 2 :(得分:2)

我使用V-Tools进行类似重构的工作,因为它会在对象中查找/替换,而不仅仅是VBA代码。 http://www.skrol29.com/us/vtools.php

答案 3 :(得分:2)

是的......几乎是

在过去的好日子里,我使用了这个。 http://www.moshannon.com/speedferret.html

帮了我很多,我觉得我有3.5英寸的磁盘;)

诀窍是将您的Excel代码复制到Access或VB6并在那里进行重构。 替换范围:解决方案是创造性命名和使用替换。 吐痰程序......那就是手册,我很抱歉。

除非你有一些严肃的excel vba代码,否则它通常是不值得的,我会重新将其中的大部分转换为c#或VB.Net dll,在那里你可以进行重构,测试和一些现代魔法,只做你能做的一点点VBA。