2015-10-24 2 views
1

У меня есть все имена функций, помещенные в лист Excel. Я подключаюсь к этому листу Excel, используя соединение ADO в VBScript. Теперь я хочу вызвать каждую функцию, которую я получаю из 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 

ответ

2

Прежде всего, что вы пытаетесь сделать здесь является ужасный подход в мета-программирования. НИКОГДА сделайте что-нибудь подобное в производственном коде!

С учетом этого VBScript не будет интерпретировать простые строки в вашем коде. Линия

"Call " & func_name & "()" 

просто поднять Прогнозный Конец Statement ошибки. Вам нужны Eval, Execute, или ExecuteGlobal такие выражения.

Eval GetRef(func_name) 

Execute func_name 

ExecuteGlobal func_name 
+0

Спасибо за совет. Я использовал подход GetRef. –

Смежные вопросы