我有一個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