如果在运行时使用LoadFunctionLibrary加载函数,则GetRef不起作用

时间:2017-01-25 12:21:30

标签: vbscript qtp

我正在尝试从函数库(我在运行时加载)执行函数。如果我使用EvalExecute来运行该功能但我想使用thisthis中提到的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中引用如下

enter image description here

当我尝试使用GetRefm时,QTP会抛出以下错误

Invalid procedure call or argument: 'GetRef' Line (10): "Set tcFunc = GetRef(objRS.Fields(1).Value)".

如果在QTP的Action中定义了foo,那么它可以工作,但是当我从功能库导入它时,它会失败。知道如何让它发挥作用吗?

编辑 - 解决方法

使用LoadFunctionLibrary加载功能库,而不是使用ExecuteFile

0 个答案:

没有答案