我正在尝试从函数库(我在运行时加载)执行函数。如果我使用Eval
或Execute
来运行该功能但我想使用this和this中提到的GetRef
QTP代码段
Call LoadFunctionLibrary("/../Libraries/Tests.vbs")
Set objCon = CreateObject("ADODB.Connection")
objCon.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & "C:\_Work\WorkingFolder\TestList.xlsx" & "';Extended Properties='Excel 12.0;HDR=YES;IMEX=1';"
Set objRS = objCon.Execute("Select * from [Sheet1$] Where [To Execute] = 'YES'")
Do While Not objRS.EOF
'Eval( objRS.Fields(1).Value)
'Execute objRS.Fields(1).Value
Set tcFunc = GetRef(objRS.Fields(1).Value)
tcFunc
objRS.MoveNext
Loop
在/../Libraries/Tests.vbs
文件中,我有这个功能
Sub foo()
msgbox "hello"
End Sub
在Excel中引用如下
当我尝试使用GetRefm时,QTP会抛出以下错误
Invalid procedure call or argument: 'GetRef'
Line (10): "Set tcFunc = GetRef(objRS.Fields(1).Value)".
如果在QTP的Action中定义了foo,那么它可以工作,但是当我从功能库导入它时,它会失败。知道如何让它发挥作用吗?
编辑 - 解决方法
使用LoadFunctionLibrary
加载功能库,而不是使用ExecuteFile
。