51Testing软件测试论坛

标题: 调用vbs脚本 [打印本页]

作者: shuishixingyu    时间: 2009-8-21 18:48
标题: 调用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中显示每个遍历到的值?
作者: liujinkui    时间: 2009-8-21 21:02
Set oSheet = oExcel.WorkSheets(SheetName).UsedRange  
这句是什么意思,我这里运行不了。
作者: shuishixingyu    时间: 2009-8-22 10:08
获取表格的使用范围
作者: lijinshui    时间: 2009-8-22 10:48
只取出最后一个是当然的呀,之前的都被你覆盖了

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
           msgbox  arrRange
       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 编辑 ]
作者: shuishixingyu    时间: 2009-8-23 11:39
在ReadFile函数中用 msgbox  arrRange是可以显示每一个值,但是因为我这是在QTP中调用这个函数,我想知道有没有办法返回这些值,因为我还想在QTP中使用这些值
作者: liujinkui    时间: 2009-8-23 13:51
标题: 回复 1# 的帖子
那就是你把Open EXCEL 的语句 漏掉了。是这样吗?
作者: liujinkui    时间: 2009-8-23 14:09
我明白你的意思了。
你把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
作者: shuishixingyu    时间: 2009-8-23 19:23
importsheet 方法是可以的,我是想试试看能否直接使用Excel里的数据,而不需要先导到DataTable中再使用
作者: lijinshui    时间: 2009-8-25 08:22
标题: 回复 8# 的帖子
可以啊,你查查Dictionary 的用法,可以解决你的问题
把数据是存到内存中,而且不需要事前知道数据的长度,直接读多少存多少
作者: shuishixingyu    时间: 2009-8-25 21:42
请问应该怎么写?对dictionary不是很了解,只是知道add,items、keys这些方法,但是还不清楚怎么在这里用上
作者: linhd030    时间: 2009-9-10 11:09
将所有数据全部显示出来,如下~~~嘎嘎

Dim fileArray(200,200),arraytest(500)
Dim str1

ReadFile "E:\1.xls","Global"
msgbox  str1
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




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