51Testing软件测试论坛

标题: 关于qtp中vbs保存excel函数的问题 [打印本页]

作者: liuhuascanf    时间: 2008-5-23 23:28
标题: 关于qtp中vbs保存excel函数的问题
各位高手,请教个问题,关于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的函数?万分感谢,这个函数也是我自己从网上搞来的
作者: liuhuascanf    时间: 2008-5-24 10:18
么人知道?
自己先顶下!
作者: hett    时间: 2008-7-4 14:39
我也遇到这个问题
后来我把record and run setting 的web 和 app 模式都设为 record and run on any open****  就可运行成功了

祝你 好运
作者: 陈能技    时间: 2008-7-4 17:29
参考这个来写吧:
http://blog.csdn.net/Testing_is_ ... /07/04/2612221.aspx


推荐新书《QTP自动化测试实践》
作者: dreamever    时间: 2008-7-5 15:34
if后面需要跟的是boolean值,或者是一个返回boolean的表达式.
楼主可以看看workbook Is Nothing 这个表达式是不是输出true或false.
但是我不太明白楼主这样写代码的目的是什么,如果是为了判断workbook对象是否为空,那好象不能写成is nothing吧,就算是ruby也不能这样判断,应该写成not workboo = empty
作者: lbzhong    时间: 2008-7-6 14:42
我写了一个简单的,你可以参考一下,不过我没有返回部分
'打开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")
作者: kun_fly    时间: 2008-7-7 16:17
不太明白,刚刚开始学习。各位能否提供一、两本关于自动化测试脚本的书籍
作者: FLY000    时间: 2008-7-19 10:40
原帖由 陈能技 于 2008-7-4 17:29 发表
参考这个来写吧:
http://blog.csdn.net/Testing_is_ ... /07/04/2612221.aspx


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


你的Blog真是什么都有啊,
作者: ahtest    时间: 2009-3-17 12:51
学习,受用




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