51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3109|回复: 3
打印 上一主题 下一主题

[求助] QTP中给EXCEL里写数据,保存后EXCEL打不开了。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-6-29 18:27:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一下是我参考论坛上某大侠写的QTP集锦中对于EXCEL操作的代码:
Dim xl
'打开excel 文件
Function OpenExcelFile(strFilePath)
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open strFilePath
End Function


'获得指定单元格数据
Function GetCellData(strSheet,rwIndex,colIndex)
GetCellData = xl.WorkSheets(strSheet).Cells(rwIndex,colIndex)
End Function

'填充单元格数据
Function PutCellData(strSheet,rwIndex,colIndex,varData)
xl.WorkSheets(strSheet).Cells(rwIndex,colIndex) = varData
msgbox varData&"aaa"
End Function

'保存并推出
Function SaveAndQuit()
xl.activeworkbook.save
xl.Quit
Set xl = nothing
End Function
我把上述代码封装成函数,后缀为.QFL
然后在resource里面将封装的函数关联进去。
当在执行脚本是,调用到xl.activeworkbook.save 这句时提示文件已存在,我选择是覆盖已存在的文件。
脚本执行完成后,我在本地查看EXCEL文件时EXCEL打不开?
请问各位大侠是什么原因。谢谢。
脚本如下:
call OpenExcelFile("D:\data.xls")
Dim loginname,psw
loginname=GetCellData(1,2,1)
psw=GetCellData(1,2,2)
msgbox loginname
SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"
Dialog("Login").WinEdit("Agent Name:").Set loginname
Dialog("Login").WinEdit("Password:").Set psw
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinObject("Date of Flight:").Type "090909"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Los Angeles"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").DblClick 110,26
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "hfhhf"
Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1
Window("Flight Reservation").WinEdit("Tickets:").Set "4"
Window("Flight Reservation").WinButton("Insert Order").Click
wait 10
Dim var_GetROProperty
If  Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")<>"" Then
        var_GetROProperty = Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
        msgbox var_GetROProperty
call PutCellData(1,2,3,var_GetROProperty)
call SaveAndQuit()
End If
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    难过
    2015-9-21 13:50
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    2#
    发表于 2009-6-29 19:19:26 | 只看该作者
    我试过上面的函数,没有出错。

    (excel表格是97-2003格式)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2009-6-29 23:32:14 | 只看该作者
    你在进程里看一下是不是有一个excel在运行了,end process.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2009-6-30 09:30:05 | 只看该作者
    某次调用或者调试的时候打开了一个Excel的实例,但是没有正常关闭
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 15:53 , Processed in 0.079664 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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