如何从EXCLE中取值
大纲编写基本都是用EXCLE,有哪位高手知道如何使用参数化从测试大纲的EXCLE中取值作为用例执行的输入值? 可以通过ADO读取Excel数据,也可以通过COM接口访问和读取Excel单元格,例如:Function ReadFile(sFileName,sSheetName)
Dim oExcel
Dim oSheet
Dim oRange
Dim arrRange
On Error Resume Next
' 创建Excel应用程序对象
Set oExcel = CreateObject("Excel.Application")
If err.Number <> 0 Then
MsgBox "未能初始化Excel" & vbCrLf & _
"请确保Excel已安装", vbCritical
Exit Function
End If
On Error Goto 0
On Error Resume Next
' 打开Excel文件
oExcel.Workbooks.Open(sFileName)
If err.Number <> 0 Then
MsgBox "未能加载Excel文件" & vbCrLf & _
"请确保Excel文件路径正确或格式正确", vbCritical
Exit Function
End If
On Error Goto 0
' 获取表格的使用范围
Set oSheet = oExcel.Worksheets(sSheetName).UsedRange
' 获取从A列到Z列,从第1行到第1000行的范围i中的所有值
Set oRange = oSheet.Range("A1:Z1000")
'把Excel数据转换到数组
arrRange = oRange.Value
' 关闭工作簿
oExcel.WorkBooks.Item(1).Close
' 退出Excel
oExcel.Quit
Set oExcel = Nothing
' 返回包含Excel数据的数组
ReadFile = arrRange
End Function 十分感谢,本人调试了一个下午也没有成功,能否给个例子,其中sFileName应该是EXCLE的文件名还是路径?sSheetName应该是sheet页的名称吧?另外可否详细介绍下ADO和COM接口访问读取EXCLE值,另外是否有相关资料可以提供,万分感谢!
代码如下:
本帖最后由 feiyunkai 于 2010-11-4 18:08 编辑COM接口 :
SetexcelApp =CreateObject("Excel.Application")
SetnewBook = excelApp.Workbooks.open(excelpath) 'excelpath为EXCEL路径
For i= 1 to 10000 '若第N行是用例起始行,则修改为for i=N to 10000 ,10000是任意一个大于用例总数的数字
CaseName=newBook.WorkSheets(SheetName).Cells(i,j) 'SheetName是用例所在Sheet,i是用例所在行,j是用例所在列
if CaseName<>"" then
printCaseName
Else
exit for
End if
Next
excelApp.Workbooks.Close
excelApp.Quit
SetnewBook=nothing
SetexcelApp =nothing
ADO接口:
Set conn= createobject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&excelpath&";Extended Properties=Excel 8.0" 'EXCEL97-2003,excelpath为EXCEL所在路径
'conn.Open "Provider=Microsoft.Jet.OLEDB.12.0;Data Source="&excelpath&";Extended Properties=Excel 12.0"'EXCEL2007要安装OLEDB12.0不然会报错
Set rs=CreateObject("ADODB.Recordset")'创建记录集
rs.Open "Select CaseName from ",conn 'SQL语句查询所有用例,CaseName 为用例所在列的列名,为用例所在Sheet
Do
If not rs.eof Then
CaseName=rs("CaseName")
print "用例名称:"&CaseName
rs.MoveNext
else
print "没有用例"
End If
loop until rs.eof=true
conn.close
Set rs=nothing
Set conn = nothing
'若调试未通过,可以MSN给我发信息,相互学习!我的MSN:yunkai614221@live.cn 十分感谢,COM口的我已经调试成功,谢谢!
页:
[1]