feiyunkai 发表于 2010-8-3 10:45:40

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 倒序输出username,password
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 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 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:48

回复 1# 的帖子

读过,楼主辛苦了。。。

xyan 发表于 2010-8-3 16:13:45

好厉害

wugecat 发表于 2010-8-5 15:40:33

读过你的帖子,你总能分享心得和代码给大家,佩服你的严谨作风

seqiness 发表于 2010-8-5 15:59:41

好厉害啊

luxiuxiu1987 发表于 2010-9-2 17:06:59

学习了

819longjiayan 发表于 2011-7-21 15:02:21

呵呵,读完了,但是其中有地方没明白。

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:27

呵呵,读完了,但是其中有地方没明白。

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:01

还有对excel录制宏的步骤没明白{:3_70:}
页: [1]
查看完整版本: QTP对EXCEL的操作(使用SQL语句对EXCEL操作&QTP利用EXCEL宏)