2017-08-25 69 views
1

我想從數據庫中讀取代碼字符串。一個字符串應該包含文本片段和稍後在項目中設置的一個/兩個變量。結果應該是這樣的:VBA運行字符串作爲代碼

"Greetings, Tom." 

通常我會做這樣的事情:

Sub Show() 
    Dim strName as String 
    strName = "Tom" 
    Debug.Print "Greetings, " & strName & "." 
    ... 

但是,在這種情況下,部分

「的問候,」 &則strName &」。 「

在我的數據庫中。在運行期間,我將strName的值設置爲多個名稱(例如,在一種情況下爲「Tom」,在另一種情況下爲「Marco」)

如何讓VBA知道strName是變量而不是字符串被顯示?最後我的電話應該是這樣的:

strDbText = <String from Database> 
strName = "Tom" 
Debug.Print strDbText '--> Greetings, Tom. 

任何人都可以幫我一次嗎? 非常感謝!

編輯: 此代碼不會是可執行文件。因此,不需要VBIDE-Objects創建一個新模塊並執行插入的代碼。它是一個字符串,將被寫入Word文檔。

解決方案: 字符串替換與替換()函數

+1

簡答:你不能。但是 - 爲什麼不使用字符串替換和*用'「Tom」'替換*'「strName」'? –

+0

看這裏:https://stackoverflow.com/questions/16510800/vba-access-get-string-from-db – Lucas

+2

爲什麼在世界上你想執行任意文本作爲代碼?當你這樣做時,你有任何惡意(或無知)用戶可能造成的損害的概念嗎?對於你所描述的內容,絕對不需要*執行任何東西。將字符串作爲'Greetings,%Name%'存儲在數據庫中。在運行時,從數據庫中讀取* as *,並用包含個人名字的字符串替換'%Name%',然後使用普通字符串操作,然後將該字符串放入標籤的標題或任何顯示它的位置。沒有*執行*涉及。 –

回答

0

我會分配strName第一,在這樣的數據庫字符串替換它...

strName = "Tom" 
strDbText = <String from Database> 
strDbText = Replace(strDbText, "strName", strName) 'This distinguishes the string from the variable 
Debug.Print strDbText '--> Greetings, Tom. 

然而,我會建議在數據庫中使用另一個變量來代替strName,因爲它可能會讓人困惑。

0

絕對同意@ShanayL回答並強烈建議其用法,我無法避免指出​​一個不安全的替代方案來解決您的問題,使用EvalEval有潛在危險,在您的應用程序中創建代碼注入漏洞!

strDbText = """Greetings, "" & strName" 
strName = "Tom" 
Debug.Print Eval(strDbText) 'Greetings, Tom 

注意:Eval是潛在的危險和它的使用強烈disencouraged!