|
8#
楼主 |
发表于 2007-6-18 10:50:26
|
只看该作者
今天尝试将object作为一个参数传入函数,但是最后还是失败了,现在将我的过程写下来,抛砖引玉,望大家多多指点
因为我们公司主要用到的是用友CELL报表插件,所以我所指的第三方软件指的用友CELL报表
第一步:我在VB6.0里编写了一个DLL文件,在其中调用了CELL的方法getcelldouble(得到单元格的数值)。当然了,因为需要使用CELL的方法,所以在component中加入了cell的OCX文件。
代码如下:
'声明成一个方法,将CELL作为一个参数输入,因为getcelldouble是私有的方法,所以这个方法也必须是private
Private Function getcellvalue(cellobj As Cell, col As Long, row As Long, sheet As Long) As Double
'调用CELL的GetCellDouble方法
getcellvalue = cellobj.GetCellDouble(col, row, sheet)
End Function
在VB中编译DLL文件通过了。
第二步:新建一个QTP脚本,代码如下
'新建一个cellobj,并用dll文件声明成cell对象
Dim cellobj
Set cellobj=createobject("dlltest.dllclass")
'将网页中的cell控件捕获,并声明成一个对象以便调用,
Dim cellactivex
Set cellactivex=browser("browser").Page("主页面").Frame("cellIFrame").ActiveX("ActiveX").WinObject("AfxWnd42s")
'If cellactivex.exist Then
'msgbox("good")
'End If
'然后调用方法
msgbox(cellobj.getcellvalue(cellactivex,1,1,1))
但是执行到调用方法,也就是msgbox(cellobj.getcellvalue(cellactivex,1,1,1))这句话时QTP报错,说没有此类参数或方法!
我思考失败的原因,可能是如下的情况:
我在网页中捕获的cell对象,也就是cellactivex,和在VB中作为参数输入的cell对象不是同一个类型,前者是QTP从网页捕获的,后者是cell报表的源生对象——前者和后者的类型是不一致的!
如果真是这样,那DLL文件可能只能调用微软的DLL文件,而针对其他第三方软件的dll文件可能都不能成功
不过希望大家能提出更多的建议,给小弟指条明路吧!
[ 本帖最后由 kursk 于 2007-6-18 11:12 编辑 ] |
|