String VBA如何将字符串作为代码行运行

String VBA如何将字符串作为代码行运行,string,ms-access,vba,String,Ms Access,Vba,有没有办法将字符串转换成可执行的代码行 比如: Dim Line1 as String Line1 = "MsgBox (""Hello"")" Execute Line1 line1 = "DoCmd.OpenForm ""form1""" 导致弹出框说你好 我所做的是从文本文件中提取行。我可以提取表单控件名称的行,并使用它们在这些表单控件上执行操作,但我想进一步执行行。 我见过这样的说法: Application.Run Line1 或者将变量设置为数组并存储在元素1中,例如 Appl

有没有办法将字符串转换成可执行的代码行

比如:

Dim Line1 as String
Line1 = "MsgBox (""Hello"")"
Execute Line1
line1 = "DoCmd.OpenForm ""form1"""
导致弹出框说你好

我所做的是从文本文件中提取行。我可以提取表单控件名称的行,并使用它们在这些表单控件上执行操作,但我想进一步执行行。 我见过这样的说法:

Application.Run Line1
或者将变量设置为数组并存储在元素1中,例如

Application.Run Line1(1)
但这对我不起作用

好的,在写这篇文章的同时,我也在做实验。我发现

Eval (Line1)
当Line1是一个消息框时有效,但当它类似于:

Dim Line1 as String
Line1 = "MsgBox (""Hello"")"
Execute Line1
line1 = "DoCmd.OpenForm ""form1"""
任何提示都将不胜感激

谢谢

您可以使用

 Eval("DoCmd.OpenForm(""form1"")") 
您必须确保包含的所有函数都使用括号。 进一步参考,

这并不是我想问的,我最终选择了一个稍微不同的方向,但这是我最终要做的,它可能会很容易改变,以更接近我的问题。实际上,我从一个外部文本文件中提取了几行文本,并将它们插入到一行代码中。我在这个例子中所做的只是隐藏列,外部文本文件是列名称的列表。(弄清楚如何输出也很有趣)


Visual Basic是一种编译器语言,因此不支持在运行时执行人类可读的代码。在程序第一次运行之前,必须首先编译用VBA编写的所有代码。
然而,SQL是一种解释器语言,可以将代码交给它逐行执行。您还可以在程序运行时从其他源获取变量的内容,只是不能在程序运行时生成字符串,然后直接在VBA中执行它。

您不必经历这种极端情况。。。因为您实际上并不是在动态执行代码。Controls()属性接受测试字符串,因此您可以使用任何源,包括更简单的表或数组

在您最初的示例中,同样的事情也可以完成,如下所示:

Dim Line1 as String
Line1 = "Hello"
MsgBox Line1

谢谢你关于括号的提示,但它仍然不起作用。完全按照您编写的方式输入代码会导致运行时错误2482,“数据库找不到您在表达式中输入的名称‘DoCmd’”,我使用Access 2003在一个具有form1的现有数据库上对其进行了测试。你能帮我把它放到上下文中,然后把你添加到的代码贴出来吗?另外,您使用的是哪个版本的Access?为了测试语法,我只是将代码绑定到一个新按钮:Private Sub Command118_Click()Eval(“DoCmd.OpenForm”(“frmMain”))End Sub在同一个表单上已经有一个按钮成功地使用了:DoCmd.OpenForm“frmMain”,所以我正在最小化潜在的变量。我在Access 2007中。如果我在Eval中将其更改为“Application.DoCmd…”,我会收到一条消息,说明DoCmd在沙盒模式下不安全,但在功能按钮中添加相同的“Application.”效果良好。我想DoCmd可能无法在沙箱模式下与Eval一起工作。