VBA运行字符串作为代码

时间:2017-08-25 12:27:14

标签: 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文档中写入的字符串。

解决方案: 字符串替换为Replace()函数

2 个答案:

答案 0 :(得分: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,因为它可能会让人感到困惑。

答案 1 :(得分:0)

绝对同意@ShanayL的回答并强烈建议使用它,我无法避免使用Eval指出一个不安全的替代方案来解决您的问题。 Eval具有潜在危险,在您的应用程序中创建代码注入漏洞!!!

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

注意:Eval具有潜在的危险性,并且强烈反对使用它!