51Testing软件测试论坛

标题: 怎样把qtp的datasheet里的某几行数据导出到另一个excel中 [打印本页]

作者: whoamiyaya    时间: 2009-8-29 23:29
标题: 怎样把qtp的datasheet里的某几行数据导出到另一个excel中
qtp的datasheet里假如有n多行数据,比如是一些登录帐号。然后我做automation是验证帐号的正确性。就是一行一行登录到某个url试验一下是不是登录成功,成功的就pass了,假如不成功的,也就是有问题的帐号,我想把它输出到另一个excel表格,这样以便于automation运行好之后可以生成另一张表,里面都是有问题的帐号。不知道这个怎么实现呢,就是把qtp的datasheet里的某几行数据导出到另一个excel中~~
作者: ermine    时间: 2009-8-30 12:01
方法1,用vbs操纵Excel,将有问题的账号写在excel里。
Set xlfile=CreateObject("excel.application")
Set xlwork=xlfile.Workbooks.Open("d:\test.xls")
Set xlsheet=xlwork.Sheets ("Action1")
'这里可以用循环,将有问题的账号输入在excel里,如
xlsheet.cells(1,1)="12324234"
xlwork.save
xlwork.Close
xlfile.quit
Set xlfile=Nothing
Set xlwork=Nothing
Set xlsheet=Nothing
方法2,先将有问题的账号数据转移到另一个datatable里,然后调用datatable.ExportSheet
作者: whoamiyaya    时间: 2009-8-30 12:32
谢谢ls~ 那还有个问题哦,就是我excel里每行除了用户名密码,还有其他column,我想每次把失效的一起复制到新的表的一行中,也就是不用xlsheet.cells(1,1)="12324234"这种cell为单位的复制,而是一行一行的复制,这个vbs里有什么好的方法吗~~

我刚才在网上找了些vbs的excel相关的函数,然后我在判断假如帐号登录有错误的这里加了以下代码:

        i = DataTable.GetCurrentRow
        DataTable.GetSheet("Global").Range( "A"&i":M"&i ).Copy
        DataTable.GetSheet("Action2").Range.( "A"&i ).PasteSpecial

意思就是把runtime的datatable的global sheet的当前行的从Ai到Mi的cell一下子copy到从Ai开始的单元格开始的Action2这个sheet。然后再把Action2这个sheet export到本地的excel。但是运行后出现语法错误。。。是我写的有问题吗

[ 本帖最后由 whoamiyaya 于 2009-8-30 15:55 编辑 ]
作者: ermine    时间: 2009-8-30 21:57
hello,我试了一下,是可以的。
Range("A" & i & ":M" & i).Copy
在&附近加下空格,要不可能不认。

也学习了,谢谢哈。
作者: whoamiyaya    时间: 2009-8-30 23:08
额。。。现在我改成了这样:
        i = DataTable.GetCurrentRow
        DataTable.GetSheet("Global").Range( "A" & i & ":M" & i ).Copy
        DataTable.GetSheet("Action2").Cells("A" & i ).PasteSpecial
可是我试了一下,为啥还是不行呢,现在初始时候的语法检查通过了,但是运行过程中,当跑到DataTable.GetSheet("Global").Range( "A" & i & ":M" & i ).Copy这里,出现run error: Object doesn't support this property or method:'Data Table.GetSheet(...).Range'

哪里有问题呢

[ 本帖最后由 whoamiyaya 于 2009-8-30 23:10 编辑 ]
作者: ermine    时间: 2009-8-31 00:13
是不是QTP的datatable不支持range对象,我在QTP里没用过range和cells
都是打开excel后,用的excel中的range和cells。
一个笨方法
可以将准备的数据放在一个excel里,然后用vbs操作这个excel,读取数据。
然后再用range.copy,再将错误的数据用PasteSpecial粘到另一个excel里。

期待高手解答。
作者: zero0223    时间: 2009-8-31 09:18
我试了下,DataTable也是报对象不支持的错
直接对Excel操作倒是可以的
有没有高手知道怎么弄的

[ 本帖最后由 zero0223 于 2009-8-31 09:47 编辑 ]
作者: lxs647    时间: 2010-5-27 14:24
我也碰到了这个问题

这个问题出的真的是莫名其妙
为了解决这个问题,浪费了我好多的时间

期待、、、、、、
作者: xavier_007    时间: 2010-5-28 16:54
我觉得DTsheet object没有range方法吧?
为什么不用Excel.Application对象呢,那个应该可以




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