我有一个Excel文件.xlam在色带增加了一个按钮来执行以下操作:是Excel VBA有可能改变模块的源代码中的另一个模块
- 扫描ActiveSheet一段预-set参数
- 以我的源文本(字符串值,硬在VBA模块直接编码的)并与来自步骤1
- 检索到的参数替换指定区域生成一个文件含有文本计算
我以这种方式保存源文本,因为它可以用密码保护,并且我不需要在.xlam文件遍地的任何地方拖动另一个文件。源文本保存在一个名为“源”一个独立的模块,看起来是这样的(感谢VBA不具有here文档):
'Source Module
Public Function GetSource() As String
Dim s As String
s = ""
s = s & "This is the first line of my source text" & vbCrLf
s = s & "This is a parameter {par1}" & vbCrLf
s = s & "This is another line" & vbCrLf
GetSource = s
End Function
功能工作正常。我的问题是如果我想更新源文本,我现在必须在.xlam文件中手动执行该操作。我想要做的是在另一个模块中构建一个类似于Sub ImportSource()
的东西,它将解析某个文件,以编程方式重建“源”模块,然后用我的计算源代码替换该模块。我不知道的是如何/如何用字符串变量中的某个值替换模块的源代码。
这就像元编程在其最糟糕的和哲学上我反对做到我的核心。但是,实际上,我想知道是否以及如何去做。
可以“出口”和“进口”编程.BAS文件。要做你正在问的东西,那必须是这种方法。我不相信有可能修改内存中的代码。请参阅[本文](http://communities.bentley.com/products/microstation/w/microstation__wiki/using-vba-to-programmatically-import-a-vba-projects-components-and-references-cs.aspx) – Floris 2013-02-11 12:07:47
@弗洛伊斯:这应该工作。如果你把它作为答案,我可以将其标记为正确 – neelsg 2013-02-11 12:18:48
并不能解决你的问题,但是在XLAM代码中存储常量的另一种方法是将它们存储在XLAM中工作表上的单元格(最好是命名单元格)中。 – 2013-02-11 12:42:28