调用vbs脚本
vbs中函数Function ReadFile(FileName,SheetName)
Set oExcel = CreateObject("Excel.Application")
Set oSheet = oExcel.WorkSheets(SheetName).UsedRange
Row = oSheet.Cells.Rows.Count
Column = oSheet.Cells.Columns.Count
For i = 1 To Row
For j = 1 To Column
arrRange = oSheet.Cells(i,j).Value
ReadFile = arrRange
Next
Next
oExcel.WorkBooks.Item(1).Close
oExcel.Quit
Set oExcel = Nothing
End Function
在QTP中用arrRange = ReadFile()
msgbox arrRange
如果这么写只能显示Excel中最后一个值,请问有什么办法能在QTP中显示每个遍历到的值? Set oSheet = oExcel.WorkSheets(SheetName).UsedRange
这句是什么意思,我这里运行不了。 获取表格的使用范围 只取出最后一个是当然的呀,之前的都被你覆盖了
Function ReadFile(FileName,SheetName)
Set oExcel = CreateObject("Excel.Application")
Set xlFile = oExcel.WorkBooks.Open(FileName)
Set XlSheet = xlFile.Sheets(SheetName)
Row = XlSheet.usedRange.Rows.Count
Column =XlSheet.usedRange.Columns.Count
For i = 1 To Row
For j = 1 To Column
arrRange = XlSheet.Cells(i,j).Value
msgboxarrRange
ReadFile = arrRange
Next
Next
oExcel.WorkBooks.Item(1).Close
oExcel.Quit
Set oExcel = Nothing
End Function
Dim arrRange,FileName,SheetName
FileName = "C:\test\11.xls"
SheetName="1"
arrRange = ReadFile(FileName, SheetName)
[ 本帖最后由 lijinshui 于 2009-8-22 10:59 编辑 ] 在ReadFile函数中用 msgboxarrRange是可以显示每一个值,但是因为我这是在QTP中调用这个函数,我想知道有没有办法返回这些值,因为我还想在QTP中使用这些值
回复 1# 的帖子
那就是你把Open EXCEL 的语句 漏掉了。是这样吗? 我明白你的意思了。你把EXCEL 导入到DATA Table 中不就可以了吗。
‘参数说明:pathFile-EXCEL文件的路径加文件名
' ETableSheet-EXCEL Sheet的标签名
' QTablesheet-QTP DATATABLE 的Sheet标签名
Public function importExcel(pathFile,ETableSheet,QTablesheet)
Dim j, rowcount
Datatable.ImportSheet pathFile,ETableSheet,QTablesheet
rowcount=DataTable.GetSheet(QTablesheet).GetRowCount '返回数据行数
importExcel=rowcount
End Function
调用:
countRow=importExcel("D:\userTable.xls","user","Action1")
For j=0 to countRow-1
...
Dialog("XXX").Activate
Dialog("xxxx").WinEdit("姓名").Set DataTable("姓名", dtLocalSheet)
...
DataTable.SetNextRow
Next
注意:要把Test Settings 中Run->Data Table iterations 设置为 Run one iteration only importsheet 方法是可以的,我是想试试看能否直接使用Excel里的数据,而不需要先导到DataTable中再使用
回复 8# 的帖子
可以啊,你查查Dictionary 的用法,可以解决你的问题把数据是存到内存中,而且不需要事前知道数据的长度,直接读多少存多少 请问应该怎么写?对dictionary不是很了解,只是知道add,items、keys这些方法,但是还不清楚怎么在这里用上 将所有数据全部显示出来,如下~~~嘎嘎
Dim fileArray(200,200),arraytest(500)
Dim str1
ReadFile "E:\1.xls","Global"
msgboxstr1
Function ReadFile(FileName,SheetName)
Set oExcel = CreateObject("Excel.Application")
Set oFile= oExcel.Workbooks.Open (FileName)
Set oSheet = oFile.WorkSheets(SheetName).UsedRange
Row = oSheet.Cells.Rows.Count
Column = oSheet.Cells.Columns.Count
For i = 1 To 5
For j = 1 To 10
arrRange = oSheet.Cells(i,j).Value
fileArray(i,j) = arrRange
str1 =str1&i&j&fileArray(i,j)&" "'将搜索到的数据全部显示出来
Next
Next
oExcel.WorkBooks.Close
oExcel.Quit
Set oExcel = Nothing
End Function
页:
[1]