我需要改变一个常量,它引用了一个网址。我们的ADI模板有一个新的服务器路径,更新代码比下载所有新模板更容易。如何更新以下内容:
Const SERVLET_PATH = "http://webaddress.com"至
Const SERVLET_PATH = "http://webaddress1.com"这有可能吗?
发布于 2014-10-22 19:23:28
首先,您需要添加对MicrosoftVisualBasicforApplicationExtenity5.3库的引用。
单击Tools>>References>>可扩展性5.3

然后,您需要包含要更新的模块的打开工作簿。这意味着当用户打开工作簿时,无法进行此更新。
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长参数。输入时,这些参数指定要搜索的行和列的范围。在输出时,这些值将指向找到的文本。
http://www.cpearson.com/excel/vbe.aspx
当然,您需要对您想要更改的每个工作簿执行此操作。这可能需要一些时间。
进一步参考资料:
https://stackoverflow.com/questions/26509578
复制相似问题