51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4994|回复: 8
打印 上一主题 下一主题

[原创] 怎样把qtp的datasheet里的某几行数据导出到另一个excel中

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-8-29 23:29:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
qtp的datasheet里假如有n多行数据,比如是一些登录帐号。然后我做automation是验证帐号的正确性。就是一行一行登录到某个url试验一下是不是登录成功,成功的就pass了,假如不成功的,也就是有问题的帐号,我想把它输出到另一个excel表格,这样以便于automation运行好之后可以生成另一张表,里面都是有问题的帐号。不知道这个怎么实现呢,就是把qtp的datasheet里的某几行数据导出到另一个excel中~~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-8-30 12:01:36 | 只看该作者
方法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
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-8-30 12:32:21 | 只看该作者
谢谢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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-8-30 21:57:02 | 只看该作者
hello,我试了一下,是可以的。
Range("A" & i & ":M" & i).Copy
在&附近加下空格,要不可能不认。

也学习了,谢谢哈。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-8-30 23:08:25 | 只看该作者
额。。。现在我改成了这样:
        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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-8-31 00:13:41 | 只看该作者
是不是QTP的datatable不支持range对象,我在QTP里没用过range和cells
都是打开excel后,用的excel中的range和cells。
一个笨方法
可以将准备的数据放在一个excel里,然后用vbs操作这个excel,读取数据。
然后再用range.copy,再将错误的数据用PasteSpecial粘到另一个excel里。

期待高手解答。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-8-31 09:18:44 | 只看该作者
我试了下,DataTable也是报对象不支持的错
直接对Excel操作倒是可以的
有没有高手知道怎么弄的

[ 本帖最后由 zero0223 于 2009-8-31 09:47 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-5-27 14:24:50 | 只看该作者
我也碰到了这个问题

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

期待、、、、、、
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-5-28 16:54:04 | 只看该作者
我觉得DTsheet object没有range方法吧?
为什么不用Excel.Application对象呢,那个应该可以
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-9 10:40 , Processed in 0.074989 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表