I am trying to execute a function from a functional library (which I am loading at runtime). Everything works if I use Eval
or Execute
to run the function but I wanted to use GetRef
as mentioned in this and this
QTP Code Snippet
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
In /../Libraries/Tests.vbs
file, I have this function
Sub foo()
msgbox "hello"
End Sub
which is referenced in the Excel as below
When I try to use GetRefm QTP is throwing the below error
Invalid procedure call or argument: 'GetRef'
Line (10): "Set tcFunc = GetRef(objRS.Fields(1).Value)".
If foo is defined in QTP's Action, then it works but when I import it from a functional library, it fails. Any idea how to make it work?
EDIT -- WORKAROUND SOLUTION
Instead of using LoadFunctionLibrary
, use ExecuteFile
to load the functional library.