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

4
有没有一种方法可以将字符串转换为可执行的代码行?类似于:
Dim Line1 as String
Line1 = "MsgBox (""Hello"")"
Execute Line1

导致弹出框显示“Hello”。 我正在从文本文件中提取行。我可以提取表单控件的名称并使用它们执行这些表单控件上的操作,但我想进一步执行这些行。 我看到有人声称这样可以工作:
Application.Run Line1

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

但是对我来说它不起作用。

好的,在写这篇文章的同时,我也一直在尝试。我发现

Eval (Line1)

当Line1是一个消息框时,它将起作用,但当它是其他形式时则不会:

line1 = "DoCmd.OpenForm ""form1"""

任何技巧都将不胜感激。
谢谢。
3个回答

3

谢谢你关于括号的提示,但还是不行。按照你写的代码粘贴后,运行时出现了错误2482,“数据库无法找到你在表达式中输入的‘DoCmd’名称”。 - charles_m80
我在使用Access 2003的一个带有Form1的现有数据库上进行了测试。你能为我解释一下背景,并发布你添加代码的内容吗?另外,你使用的是哪个版本的Access? - Jimmy Smith
为了测试语法,我只是将代码绑定到一个新按钮上:Private Sub Command118_Click() Eval ("DoCmd.OpenForm(""frmMain"")") End Sub同一表单上已经有一个按钮成功使用:DoCmd.OpenForm "frmMain"所以我在最小化潜在变量。我在Access 2007中。 如果我在Eval中将其更改为“Application.DoCmd ...”,我会收到有关DoCmd在沙箱模式下不安全的消息,但是在功能按钮中添加相同的“Application。”却可以正常工作。 我想Eval中的DoCmd可能无法在沙箱模式下工作。 - charles_m80

0

这不完全是我所问的,最终我采取了稍微不同的方向,但这就是我最终做的事情,很可能可以轻松地修改以更接近我的问题。实际上,我从外部文本文件中提取了文本行,并将它们插入到代码行中。在这个例子中,我所做的只是隐藏列,而外部文本文件是列名列表。(找出如何输出它也很有趣)

Open "C:\UserList.txt" For Input As #TextFile
While Not EOF(TextFile)
Line Input #TextFile, TextLine
Screen.ActiveDatasheet.Controls(TextLine).ColumnHidden = True
Wend

0
Visual Basic 是一种编译语言,因此不支持在运行时执行人类可读的代码。所有使用 VBA 编写的代码在程序第一次运行之前必须首先编译。 然而,SQL 是一种解释器语言,可以处理并逐行执行代码。您还可以在程序运行时从其他来源获取变量内容,但无法直接在 VBA 中构建一个字符串并在程序运行时执行它。

VB .Net是一种预编译语言。而VBA则不同,它是一种解释性语言,并且具有ExecuteLine函数。 - y4cine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接