51Testing软件测试论坛

标题: QTP 如何调用外部xls,不用手动导入的方法; [打印本页]

作者: yao2631488    时间: 2013-1-5 17:54
标题: QTP 如何调用外部xls,不用手动导入的方法;
QTP 如何调用外部xls,不用手动导入的方法; 求指导。
作者: 黑羽祭    时间: 2013-1-6 09:09
回复 1# yao2631488


    我在51空间里写过:
http://www.51testing.com/index.php?uid-307440-action-viewspace-itemid-827863
作者: 赵佳乐SMILE    时间: 2013-1-6 09:38
回复 2# 黑羽祭


    老大 函数一般要写在哪里啊
作者: 黑羽祭    时间: 2013-1-6 10:09
回复 3# 赵佳乐SMILE


    这就看你的习惯了我是如果脚本是独立的小脚本,就随便写在Action里,写下面点位置。
如果脚本比较大,就写在独立的vbs里,加载到Library就可以了。
不过在Library里,不能调用Action里的函数。
Library里的函数文件,要注意保存的路径,建议使用相对路径,当脚本移动时不会因找不到文件出错。
Library里的函数也可以使用对象库,只要对象库里存在相应的对象就好了。
作者: 赵佳乐SMILE    时间: 2013-1-6 11:03
回复 4# 黑羽祭


谢谢 学习了
我这两天正好在研究这个 因为我发现 用Local表 维护测试数据好麻烦 嘿嘿
作者: 黑羽祭    时间: 2013-1-6 11:22
回复 5# 赵佳乐SMILE


    DataTable表吗?我早就没用了,用外部Excel吧,处理数据方便多了。
作者: user603    时间: 2013-1-6 13:52
回复 6# 黑羽祭


    同感。
作者: yao2631488    时间: 2013-1-6 17:25
回复 2# 黑羽祭
非常感谢,上网找了些都不知道怎么用。。这个直接用函数,方便了许多~
作者: 赵佳乐SMILE    时间: 2013-1-6 17:32
回复 6# 黑羽祭


    弱弱的问一下 为啥用QTP跑过的Excel变成 只读的了? 即使关闭了QTP也是 不能修改数据了
作者: 赵佳乐SMILE    时间: 2013-1-6 17:32
本帖最后由 赵佳乐SMILE 于 2013-1-6 17:38 编辑

回复 6# 黑羽祭


    我没有用你的那个函数
我用的是

  1. '获取参数文件路径
  2. FilePath=Environment("TestDir")&"\测试工程数据.xls"
  3. Set ExcelBook=CreateObject("Excel.Application")
  4. '设置为true的情况,文档会打开
  5. ExcelBook.Visible=false
  6. ExcelBook.DisplayAlerts=false
  7. Set MyExcelBook=ExcelBook.WorkBooks.Open(FilePath)
  8. Set MyExcelSheet=MyExcelBook.Sheets("Sheet1")
  9. '获取Excel表中记录的条数
  10. GetExcelSheetRowsCount=MyExcelSheet.UsedRange.Rows.Count

  11. For i=2 to GetExcelSheetRowsCount
  12. 所有操作
  13. Next
  14. ExcelBook.Quit
  15. Set ExcelBook=Nothing
复制代码

作者: user603    时间: 2013-1-6 19:07
回复 9# 赵佳乐SMILE


    看看有没有关闭释放创建的Excel
作者: 黑羽祭    时间: 2013-1-7 09:16
回复 10# 赵佳乐SMILE


    我没看出有什么问题,而且,我也试了你写的脚本,我的xls并没有变成只读形式。
唯一不一样的可能我用的是xlsx,但并不影响脚本啊。
作者: 赵佳乐SMILE    时间: 2013-1-7 09:38
回复 12# 黑羽祭


    嗯 很奇怪 关了机 今天早上来 又不是只读的了

我看好像说是不支持xlsx 的 所以才用xls的

win7 +QTP11 +IE8
作者: 黑羽祭    时间: 2013-1-7 10:12
回复 13# 赵佳乐SMILE


    支持的,至少用我的方法是支持的,我从QTP10开始就一直用的XLSX。
我现在的环境也是win7+IE8+QTP11.5了。
那个问题解决了就好。稀奇古怪的环境问题。
作者: yao2631488    时间: 2013-1-7 10:23
回复 4# 黑羽祭
再问下大大用你这个函数,要是想循环调用sheet中所有的数据,如何实现啊?
作者: 黑羽祭    时间: 2013-1-7 10:56
回复 15# yao2631488


如果你是固定的行和列,用个两层的for循环不就出来了嘛。
如果不是固定的,用个两层Do循环,加个判断为空就换下一行或下一列也可以嘛~(PS:这种的话,数据矩阵中就不能有空格了,空么就写null吧)
作者: 赵佳乐SMILE    时间: 2013-1-7 11:30
回复 14# 黑羽祭


    哦 那我也换xlsx试试 哎 今天开月总结会 要往LR方向发展了
作者: 黑羽祭    时间: 2013-1-7 11:51
回复 17# 赵佳乐SMILE


    嗯~加油吧。
要学的东西太多了
作者: 正在更新    时间: 2013-1-12 12:33
回复 17# 赵佳乐SMILE


    MyExcelBook.close false

先关闭被EXCEL应用打开的EXCEL文档,再退出EXCEL 试试吧
作者: cellule    时间: 2013-1-14 13:36
额,用QTP写exl的时候,我的习惯是先看下有没打开exl,如果有打开则关闭

如果你是要动态加载exl到dataTable里面 可以用这个DataTable.Import(FileName)方法
作者: zhaomiaoqq    时间: 2013-1-15 10:30
Dim Conn  
Dim rs  
Dim i  
Dim sql  

'On Error Resume Next
xlsFile="D:\........\book.xls" 'EXCEL路径与文件名
Set fso=CreateObject("scripting.filesystemobject")

If fso.FileExists(xlsFile) Then
Set Conn=CreateObject("ADODB.Connection")
Set rs=CreateObject("ADODB.Recordset")
strSheetName="sheet1" 'EXCEL表名
Conn.Open "rovider=Microsoft.Jet.OLEDB.4.0ersist Security Info=False;Data Source="&xlsFile&";Extended Properties='Excel 8.0;HDR=Yes'" '连接EXCEL文件
sql = "select * from [" & strSheetName & "$]" 'ooo
rs.Open sql, Conn,3,3
rs.MoveFirst
If RS.BOF=False Then
viewdata=rs.GetRows
'获取二维数组的长度 UBound(<数组>[,<维数>])
For row=0 To UBound(viewdata,2)
        For col=0 To UBound(viewdata,1)
        STRsql=STRsql&viewdata(col,row)&  "  "
        Next
        STRsql=STRsql&vbCrLf
Next
End If
rs.Close '关闭数据集
Conn.Close '关闭对象
MsgBox strsql
Else
        openXlsFile="所打开的文件不存在,请检查路径是否正确"
End If
作者: zhaomiaoqq    时间: 2013-1-15 10:36
俩个偷笑的的表情分别是P和 ;     P




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2