Vbscript 如果在运行时使用LoadFunctionLibrary加载函数,则GetRef不工作
我试图从函数库(在运行时加载)执行函数。如果我使用Vbscript 如果在运行时使用LoadFunctionLibrary加载函数,则GetRef不工作,vbscript,qtp,Vbscript,Qtp,我试图从函数库(在运行时加载)执行函数。如果我使用Eval或Execute来运行函数,那么一切都正常,但我想使用GetRef,如和中所述 QTP代码片段 Call LoadFunctionLibrary("/../Libraries/Tests.vbs") Set objCon = CreateObject("ADODB.Connection") objCon.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & "C:\_Wo
Eval
或Execute
来运行函数,那么一切都正常,但我想使用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抛出了以下错误
无效的过程调用或参数:“GetRef”
第(10)行:“设置tcFunc=GetRef(objRS.Fields(1.Value)”。
如果foo是在QTP的操作中定义的,那么它可以工作,但是当我从函数库导入它时,它失败了。你知道怎么做吗
编辑--变通解决方案
与其使用
LoadFunctionLibrary
,不如使用ExecuteFile
来加载函数库。这不是在拉标题吗?因此实际上,它正在尝试GetRef(“测试名称”)
并失败(出于多种原因,1.过程指针不能包含空格2.它不存在)。您是否确实尝试过调试objRS.Fields(1).Value
返回的而不是假设的内容?HDR=YES
,以便正确处理标题。另外,objRS.Fields(1.Value)
正确打印值(我使用print
只是为了验证)为什么循环通过,你只想调用GetRef()
一次对吗?@Lankymart-只是使用了ExecuteFile
而不是LoadFunctionLibrary
,这就成功了LoadFunctionLibrary
是QTP的最新开发,因此假设它没有经过全面测试(鉴于QTP是一个测试工具,这很讽刺),我看不到任何答案框-看起来我忘了选中“回答我自己的问题”复选框。