51Testing软件测试论坛

标题: QTP对EXCEL的操作(使用SQL语句对EXCEL操作&QTP利用EXCEL宏) [打印本页]

作者: feiyunkai    时间: 2010-8-3 10:45
标题: QTP对EXCEL的操作(使用SQL语句对EXCEL操作&QTP利用EXCEL宏)
本帖最后由 feiyunkai 于 2010-12-20 18:14 编辑

今天看了个帖子,VBS脚本怎样对EXCEL排序,我回复了2个方法,感觉可能对大家有用,所以把回复的内容独立出来,希望对大家有所帮助,谢谢!(原帖连接:http://bbs.51testing.com/viewthread.php?tid=280755&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D12
一、创建ADO对象,把EXCEL当作数据库对EXCEL中数据进行(增、删、改、查)
具体代码如下(若想对EXCEL进行增、删、改、查,修改红色部分的SQL语句即可):
'以下代码是按username 倒序输出usernamepassword
filepath="D:\test.xls"
  '这里输入EXCEL的实际路径
Set conn= createobject("ADODB.Connection")  '创建ADO对象
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";Extended Properties=Excel 8.0"    'ADO连接字符串8.0
EXCEL97-2003
Set rs=CreateObject("ADODB.Recordset")  '创建记录集
rs.Open "Select username,password from [Sheet1$] order by username desc",conn    '这里的SQL语句与SQL中的区别是表名后要加个美圆符号$
Do
If not rs.eof Then
        username=rs("username")  
        password=rs("password")
        print "username
"&username&"   password"&password
        rs.MoveNext
else
        msgbox "
没有记录"
End If
loop until rs.eof=true
conn.close
Set rs=nothing
Set conn = nothing


'修改EXCEL数据:

filepath="D:\test.xls"
Set conn= createobject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";Extended Properties=Excel 8.0"
Set rs=CreateObject("ADODB.Recordset")
rs.Open "update [Sheet1$] set username='修改后内容' where username='finger07'",conn
conn.close
Set rs=nothing
Set conn = nothing

'附加说明
'若要打开EXCEL2007,需要修改连接字符串(橘黄色部分),修改为:"Provider=Microsoft.Ace.OLEDB.12.0;Data Source="&filepath&";Extended Properties=Excel 12.0"  

二、利用EXCEL宏,对数据进行各种操作(具体操作要预先录制成宏,然后使用VBS调用宏即可)
步骤一:录制排序的宏(EXCEL2007录制宏步骤:点击视图,点击宏,点击录制宏,输入宏名称(假设取名为:paixu),点击确定,然后对EXCEL进行排序操作,排序完点击停止录制,保存EXCEL
步骤二VBS中调用宏,代码如下:
Set excel=CreateObject("excel.application")
Set excelbooks=excel.Workbooks.Open("D:\test.xls") '
D:\test.xls修改为EXCEL所在路径
excel.DisplayAlerts = False  '
设置EXCEL静默保存
excel.Run"paixu"  '
这里的paixu为刚才录制的宏的名称
excelbooks.Save                    
excelbooks.Close
excel.Quit
Set excelbooks=Nothing
Set excel=nothing






[ 本帖最后由 feiyunkai 于 2010-8-6 17:57 编辑 ]
作者: 17800455    时间: 2010-8-3 13:29
标题: 回复 1# 的帖子
读过,楼主辛苦了。。。
作者: xyan    时间: 2010-8-3 16:13
好厉害
作者: wugecat    时间: 2010-8-5 15:40
读过你的帖子,你总能分享心得和代码给大家,佩服你的严谨作风
作者: seqiness    时间: 2010-8-5 15:59
好厉害啊
作者: luxiuxiu1987    时间: 2010-9-2 17:06
学习了
作者: 819longjiayan    时间: 2011-7-21 15:02
呵呵,读完了,但是其中有地方没明白。

If not rs.eof Then
        username=rs("username")  
        password=rs("password")
        print "username:"&username&"   password:"&password
        rs.MoveNext
else
        msgbox "没有记录"
End If
这个地方的判断语句是什么意思,是打开的文件不为空,然后进行的赋值?
作者: 819longjiayan    时间: 2011-7-21 15:02
呵呵,读完了,但是其中有地方没明白。

If not rs.eof Then
        username=rs("username")  
        password=rs("password")
        print "username:"&username&"   password:"&password
        rs.MoveNext
else
        msgbox "没有记录"
End If
这个地方的判断语句是什么意思,是打开的文件不为空,然后进行的赋值?
作者: 819longjiayan    时间: 2011-7-21 15:04
还有对excel录制宏的步骤没明白




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