51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4707|回复: 14
打印 上一主题 下一主题

[原创] 【已解决】QTP中操作Excel的函数求怎么调用的

[复制链接]
  • TA的每日心情
    奋斗
    2020-7-17 08:14
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2013-2-4 12:30:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 黑羽祭 于 2013-2-7 08:42 编辑

    Function SaveWorkBook(objExcelApp,workbookIdentifier,path)
            Dim workbook
            On error resume next
            Set  workbook=objExcelApp.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 objFso=createobject("Scripting.FileSystemObject")
                    'if the path has no file extension than and the 'xlsx' extension
                    If instr(path,".")=0 Then
                            path=path & ".xlsx"
                    End If
                    On error resume next
                    objFso.DeleteFile path
                    Set objFso=nothing
                    Err=0
                    On error goto 0
                    workbook.SaveAs path
                    End If
                    SaveWorkBook="OK"
            else
            SaveWorkBook="Bad Workbook Identifier"
            End If
    End Function

    以上是在网上看到的一个函数,
    最郁闷的是不知道这个函数怎么去调用呢.
    请各位支招啊
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 15:13
  • 签到天数: 1198 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2013-2-4 13:28:27 | 只看该作者
    ********************************************************************************************* ' 函数说明:保存工作薄; ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    '          (2)workbookIdentifier:属于ExcelApp的工作薄名称;
    '          (3)path:保存的路径; ' 返回结果:
    '          (1)保存成功,返回字符串:OK
    '          (2)保存失败,返回字符串:Bad Worksheet Identifier
    ' 调用方法: '           ret = SaveWorkbook(ExcelApp, "Book1", "D:\Example1.xls") ' ****************
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    前天 15:13
  • 签到天数: 1198 天

    连续签到: 1 天

    [LV.10]测试总司令

    3#
    发表于 2013-2-4 13:28:54 | 只看该作者
    找资料 要找全啊。。。。

    网上有很好的啊

    http://wenku.baidu.com/view/5eae40d6360cba1aa811dae6.html
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-7-17 08:14
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]测试连长

    4#
     楼主| 发表于 2013-2-4 15:22:25 | 只看该作者
    回复 3# 赵佳乐SMILE


        哦谢谢了,我再看看~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    前天 15:13
  • 签到天数: 1198 天

    连续签到: 1 天

    [LV.10]测试总司令

    5#
    发表于 2013-2-4 15:31:08 | 只看该作者
    回复 4# lijingprince5


       不客气
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    6#
    发表于 2013-2-5 11:05:11 | 只看该作者
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-7-17 08:14
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]测试连长

    7#
     楼主| 发表于 2013-2-5 12:13:48 | 只看该作者
    回复 6# 黑羽祭


        谢谢版主!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-7-17 08:14
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]测试连长

    8#
     楼主| 发表于 2013-2-5 14:27:46 | 只看该作者
    回复  lijingprince5
    黑羽祭 发表于 2013-2-5 11:05



        黑羽祭:如果有时间 麻烦帮我看下 下面这个操作Excel的操作.我在调用时,函数内部出现了错误:VBS错误代码为:800a03ec
    函数代码
    1. Function CompareSheets(sheet1_t,sheet2_t,startColumn,numberOfColumns,startRow,numberOfRows,trimed,path)
    2.         Dim returnVal 'as boolean
    3.         'Dim workbook 'as workbook object
    4.         returnVal=true
    5.         Dim objExcelApp
    6.         Dim objExcelBook
    7.         Dim sheet1
    8.         Dim sheet2
    9.         Set objExcelApp=createobject("Excel.Application")
    10.         set objExcelBook=objExcelApp.Workbooks.Open(path)
    11.         set sheet1=objExcelBook.Worksheets.Item(sheet1_t)
    12.         set sheet2=objExcelBook.Worksheets.Item(sheet2_t)
    13.        
    14.        
    15.        
    16.        
    17.            If sheet1 is nothing or sheet2 is nothing Then
    18.         CompareSheets=false
    19.         Exit Function
    20.                
    21.        
    22.                
    23.         End If
    24.        
    25.         'start to compare
    26.         For r = startRow To (startRow + (numberOfRows -1))
    27.                 For c = startColumn To (startColumn + (numberOfColumns-1))
    28.                        
    29.                         Value1=sheet1.Cells(r,c)
    30.                         Value2=sheet2.Cells(r,c)
    31.                        
    32.                         If trimed Then
    33.                                 Value1 = trim(Value1)
    34.                                 Value2 = trim(Value2)
    35.                                
    36.                         End If
    37.                        
    38.                        
    39.                         If Value1 <> Value2 Then
    40.                                 Dim cell
    41.                                 sheet2.Cells(r,c)="Compare conflict -value was ' " & Value2 & "',Expected value is '" & Value1 &"'."
    42.                          Set cell=sheet2.Cells(r,c)
    43.                          cell.Font.Color=vbRed
    44.                          returnVal=False
    45.                         End If
    46.                 Next
    47.         Next
    48.         CompareSheets=returnVal
    49. End Function
    复制代码
    调用函数的代码为:
    1. CompareSheets "Sheet1","Sheet2",0,3,0,3,true,"C:\Documents and Settings\xxx.xlsx"
    复制代码
    谢谢您了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    9#
    发表于 2013-2-5 15:08:25 | 只看该作者
    回复 8# lijingprince5


        这个函数是做Excel中,2个Sheet表的比对工作,不一样的标注出来。
    但这个函数中,没有写Save 和Quit操作,也没有释放,所以在做完对比和写入操作后,进程中会有个Excel,会对下次操作造成影响。所以我改了下函数:
    1. Function CompareSheets(sheet1_t,sheet2_t,startColumn,numberOfColumns,startRow,numberOfRows,trimed,path)
    2.         Dim returnVal 'as boolean
    3.         returnVal=true
    4.         Dim objExcelApp
    5.         Dim objExcelBook
    6.         Dim sheet1
    7.         Dim sheet2
    8.         Set objExcelApp=createobject("Excel.Application")
    9.         set objExcelBook=objExcelApp.Workbooks.Open(path)
    10.         set sheet1=objExcelBook.Worksheets.Item(sheet1_t)
    11.         set sheet2=objExcelBook.Worksheets.Item(sheet2_t)

    12.         If sheet1 is nothing or sheet2 is nothing Then
    13.             CompareSheets=false
    14.             objExcelBook.Save
    15.             objExcelApp.Quit
    16.             Set sheet1 = Nothing
    17.             Set sheet2 = Nothing
    18.             Set objExcelBook = Nothing
    19.             Set objExcelApp = Nothing
    20.             Exit Function
    21.         End If
    22.         
    23.         'start to compare
    24.         Dim Value1,Value2
    25.         For r = startRow To (startRow + (numberOfRows -1))
    26.                 For c = startColumn To (startColumn + (numberOfColumns-1))
    27.                         Value1=sheet1.Cells(r,c)
    28.                         Value2=sheet2.Cells(r,c)
    29.                         If trimed Then
    30.                                 Value1 = trim(Value1)
    31.                                 Value2 = trim(Value2)
    32.                         End If
    33.                         
    34.                         If Value1 <> Value2 Then
    35.                                 Dim cell
    36.                                 sheet2.Cells(r,c)="Compare conflict -value was ' " & Value2 & "',Expected value is '" & Value1 &"'."
    37.                          Set cell=sheet2.Cells(r,c)
    38.                          cell.Font.Color=vbRed
    39.                          returnVal=False
    40.                         End If
    41.                 Next
    42.         Next
    43.         CompareSheets=returnVal
    44.         
    45.         '保存、关闭Excel并释放
    46.         objExcelBook.Save
    47.         objExcelApp.Quit
    48.         Set sheet1 = Nothing
    49.         Set sheet2 = Nothing
    50.         Set objExcelBook = Nothing
    51.         Set objExcelApp = Nothing
    52. End Function
    复制代码



    然后是调用:
    1. CompareSheets "Sheet1","Sheet2",1,3,1,5,true,"D:\Test.xlsx"
    复制代码


    这个参数好像是从1开始计数的,参数中Start位你都写的0,也会报错吧。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-7-17 08:14
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]测试连长

    10#
     楼主| 发表于 2013-2-5 15:37:02 | 只看该作者
    回复 9# 黑羽祭


        谢谢您. 您说对了,代码有两方面的问题:
    1:参数设置有问题应该从"1"开始
    2:没有最后的关掉对象资源的操作,导致excel的进程一直存在


    用你的 方法是OK的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    11#
    发表于 2013-2-5 15:48:11 | 只看该作者
    回复 10# lijingprince5


       
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2013-2-21 23:10:08 | 只看该作者
    回复 1# lijingprince5

    Excel的操作几乎都是围绕工作簿、工作表、单元格展开的,这些就是Excel操作的核心对象,这些也是VBA的核心对象。
    对于Excel来说,最外层的vba对象就是Application,代表整个Excel应用程序。每个Excel文件,都对应一个Workbook;文件中的每个Sheet工作表,都对应一个Worksheet;表单中的单元格,对应的是Range对象。从上面对于excel vba对象的介绍,可以很容易的看出每个对象的层级关系和包含关系:
      Application对象必然包含一个Workbooks集合,来表示Excel的每个文件;
      Workbook对象必然包括一个Worksheets集合,来表示它包含的所有工作表;
      Worksheet对象又必然包含Range或者Cells对象,来标识它包含的单元格
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-7-17 08:14
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]测试连长

    13#
     楼主| 发表于 2013-2-22 09:52:20 | 只看该作者
    回复 12# laoli0225


        谢谢您的分析,这样条理更清楚了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-5-15 18:25
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    14#
    发表于 2014-4-21 14:33:19 | 只看该作者
    学习了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-5-15 18:25
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    15#
    发表于 2014-4-22 11:13:47 | 只看该作者
    For i = 1 To 3 Step 1       
    For j = 1 To 3 Step 1
    Set excel = createobject("Excel.Application")
    excel.Workbooks.Open "D:\Test.xlsx"
    Set osheet = excel.Sheets.Item(1)
    d =osheet.cells(i,j)
    print d
    next
    next
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-9 08:27 , Processed in 0.094288 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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