51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3251|回复: 10
打印 上一主题 下一主题

[求助] 调用vbs脚本

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-8-21 18:48:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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中显示每个遍历到的值?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2009-8-21 21:02:32 | 只看该作者
    Set oSheet = oExcel.WorkSheets(SheetName).UsedRange  
    这句是什么意思,我这里运行不了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2009-8-22 10:08:18 | 只看该作者
    获取表格的使用范围
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2009-8-22 10:48:18 | 只看该作者
    只取出最后一个是当然的呀,之前的都被你覆盖了

    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 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2009-8-23 11:39:10 | 只看该作者
    在ReadFile函数中用 msgbox  arrRange是可以显示每一个值,但是因为我这是在QTP中调用这个函数,我想知道有没有办法返回这些值,因为我还想在QTP中使用这些值
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2009-8-23 13:51:31 | 只看该作者

    回复 1# 的帖子

    那就是你把Open EXCEL 的语句 漏掉了。是这样吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
    发表于 2009-8-23 14:09:50 | 只看该作者
    我明白你的意思了。
    你把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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2009-8-23 19:23:31 | 只看该作者
    importsheet 方法是可以的,我是想试试看能否直接使用Excel里的数据,而不需要先导到DataTable中再使用
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2009-8-25 08:22:10 | 只看该作者

    回复 8# 的帖子

    可以啊,你查查Dictionary 的用法,可以解决你的问题
    把数据是存到内存中,而且不需要事前知道数据的长度,直接读多少存多少
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2009-8-25 21:42:26 | 只看该作者
    请问应该怎么写?对dictionary不是很了解,只是知道add,items、keys这些方法,但是还不清楚怎么在这里用上
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2009-9-10 11:09:01 | 只看该作者
    将所有数据全部显示出来,如下~~~嘎嘎

    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
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-20 06:27 , Processed in 0.085715 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表