使用VBA编码更改VBA编码

时间:2014-10-22 14:15:04

标签: vba excel-vba metaprogramming constants excel

我需要更改一个引用网址的常量。我们的ADI模板有一个新的服务器路径,更新代码比下载所有新模板更容易。如何更新以下内容:

Const SERVLET_PATH = "http://webaddress.com"

Const SERVLET_PATH = "http://webaddress1.com"

这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

首先,您需要添加对Microsoft Visual Basic for Applications Extensibility 5.3库的引用。

点击工具>>参考>> Microsoft Visual Basic for Applications可扩展性5.3

vba project references

然后你需要open the workbook包含你想要更新的模块。这意味着当用户打开工作簿时,您无法进行此更新。

Workbook.Open filePath

接下来,您需要遍历工作簿中的每个代码模块,寻找您希望更改的常量。

Sub replaceConstant()
    Dim project As VBIDE.VBProject
    For Each project In Application.VBE.VBProjects

        Dim codeMod As VBIDE.CodeModule
        Dim component As VBIDE.VBComponent

        For Each component In project.VBComponents

            If component.Name <> "TheVeryUniqueNameOfTheCodeModuleWhereThisCodeResides" Then

                Set codeMod = component.CodeModule

                Dim startline As Long
                startline = 1 'find takes startline in byref and uses it as an output parameter.

                codeMod.Find Target:="Const SERVLET_PATH = ""http://webaddress.com""", _
                    startline:=startline, startcolumn:=1, endline:=codeMod.CountOfLines, endcolumn:=1

                codeMod.ReplaceLine startline, "Const SERVLET_PATH = ""http://webaddress1.com"""


            End If
        Next component

    Next project
End Sub    

以上代码的工作原理是:

  

Find方法接受ByRef Long参数。输入后,这些参数指定要搜索的行和列的范围。在输出时,这些值将指向找到的文本。

CPearson.com - Programming the VBA Editor

当然,您需要为要更改的每个工作簿执行此操作。这可能需要一些时间。

更多资源: