51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6767|回复: 8
打印 上一主题 下一主题

[原创] 关于qtp中vbs保存excel函数的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-5-23 23:28:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位高手,请教个问题,关于vbs脚本里面保存excel的函数,脚本如下:

dim tmpExcel
tmpExcel = "D:\qtp\DBTest\tmp.xls"

Set excelapp = CreateObject("excel.application")
excelapp.Workbooks.Open (tmpExcel) '打开工作薄
Call SaveWorkbook(excelapp, "tmp","D:\qtp\DBTest\a.xls")
       

' *********************************************************************************************
' 函数说明:保存工作薄;
' 参数说明:
'          (1)ExcelApp:Excel应用程序名称;
'          (2)workbookIdentifier:属于ExcelApp的工作薄名称;
'          (3)path:保存的路径;
' 返回结果:
'          (1)保存成功,返回字符串:OK
'          (2)保存失败,返回字符串:Bad Worksheet Identifier
' 调用方法:
'           ret = SaveWorkbook(ExcelApp, "Book1", "D:\Example1.xls")
' *********************************************************************************************
Function SaveWorkbook(ExcelApp, workbookIdentifier, path) 'As String
    Dim workbook
    On Error Resume Next  '启用错误处理程序
    Set workbook = ExcelApp.Workbooks(workbookIdentifier)
    On Error GoTo 0   '禁用错误处理程序
    If Not workbook Is Nothing Then
        If path = "" Or path = workbook.FullName Or path = workbook.Name Then
            workbook.Save
        Else
            Set fso = CreateObject("scrīpting.FileSystemObject")
            '判断路径中是否已添加扩展名.xls
            If InStr(path, ".") = 0 Then
                path = path & ".xls"
            End If
            '删除路径下现有同名的文件
            On Error Resume Next
            fso.DeleteFile path
            Set fso = Nothing
            Err = 0
            On Error GoTo 0
           
            workbook.SaveAs path
        End If
        SaveWorkbook = "OK"
    Else
        SaveWorkbook = "Bad Workbook Identifier"
    End If
End Function
'*****************************************************************************
现在问题如下,我对excel文件执行编辑以后,每次执行到函数里面 "    If Not workbook Is Nothing Then"这里时候,都提示"缺少对象
Line (144): "If Not workbook Is Nothing Then".  "; 而且"  Set workbook = ExcelApp.Workbooks(workbookIdentifier)"后,workbook这个值显示的是"no value",每次都执行不下去,请问这是甚么原因呢,我试过好多方法都不管用,是不是跟我的参数传的有问题?
我的想法是把tmp.xls这个文件编辑后,然后保存为a.xls,另外tmp.xls的sheet名字也叫"tmp",请问我这样用这个函数问题在哪儿?
各位高手有没有个完整的实例来解释下这个保存excel的函数?万分感谢,这个函数也是我自己从网上搞来的
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-5-24 10:18:09 | 只看该作者
么人知道?
自己先顶下!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-7-4 14:39:54 | 只看该作者
我也遇到这个问题
后来我把record and run setting 的web 和 app 模式都设为 record and run on any open****  就可运行成功了

祝你 好运
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-7-4 17:29:40 | 只看该作者
参考这个来写吧:
http://blog.csdn.net/Testing_is_ ... /07/04/2612221.aspx


推荐新书《QTP自动化测试实践》
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-7-5 15:34:44 | 只看该作者
if后面需要跟的是boolean值,或者是一个返回boolean的表达式.
楼主可以看看workbook Is Nothing 这个表达式是不是输出true或false.
但是我不太明白楼主这样写代码的目的是什么,如果是为了判断workbook对象是否为空,那好象不能写成is nothing吧,就算是ruby也不能这样判断,应该写成not workboo = empty
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-7-6 14:42:28 | 只看该作者
我写了一个简单的,你可以参考一下,不过我没有返回部分
'打开excel并填入数据,path为路径、sheetbook卡片名称,a数字 b字母  坐标,varstr填入内容
Sub saveexcel(path,sheetbook,a,b,varstr)
   Set excelapp = CreateObject("excel.application")
   excelapp.Workbooks.Open path
   Set excelsheet = excelapp.Sheets.Item(sheetbook)
   excelsheet.cells(a,b).Value = cstr(varstr)
   excelapp.ActiveWorkbook.Save
   excelapp.Workbooks.Close
   Set excelapp = Nothing
End Sub
'Call saveexcel("E:\probject\qtp\public\test.xls","Sheet1","2","a","varstr")
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-7-7 16:17:09 | 只看该作者
不太明白,刚刚开始学习。各位能否提供一、两本关于自动化测试脚本的书籍
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-7-19 10:40:13 | 只看该作者
原帖由 陈能技 于 2008-7-4 17:29 发表
参考这个来写吧:
http://blog.csdn.net/Testing_is_ ... /07/04/2612221.aspx


推荐新书《QTP自动化测试实践》


你的Blog真是什么都有啊,
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-3-17 12:51:46 | 只看该作者
学习,受用
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-24 10:33 , Processed in 0.084448 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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