迭代函数名称

时间:2015-10-24 03:21:20

标签: vbscript

我将所有函数名称放在Excel工作表中。我使用VBScript中的ADO连接连接到此Excel工作表。现在我想调用我从Excel中获取的每个函数。

我使用下面的代码,但它给了我错误。谁能告诉我如何使用循环迭代和调用不同的函数?

myXlsFile = "D:\func.xlsx"

Set objExcel = CreateObject("ADODB.Connection")

objExcel.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & myXlsFile & _
  ";Extended Properties=""Excel 12.0;IMEX=1;"

qry = "Select * from [Sheet1$]"
Set dbconnect = objExcel.Execute(qry)

While dbconnect.Eof <> True
  func_name = dbconnect.fields("func")
  "Call " & func_name & "()"
  dbconnect.MoveNext
Wend

Function sum()
  a = 10
  b = 10
  c = a+b
  MsgBox c
End Function

Function multiply()
  a = 10
  b = 10
  c = a*b
  MsgBox c
End Function

1 个答案:

答案 0 :(得分:2)

首先,您在此尝试做的是元编程中的 可怕的 方法。 从不 在生产代码中执行类似的操作!

据说,VBScript不会解释代码中的裸字符串。这条线

"Call " & func_name & "()"

只会引发预期的结束语错误。您需要EvalExecuteExecuteGlobal这样的表达方式。

Eval GetRef(func_name)

Execute func_name

ExecuteGlobal func_name