51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] VBS读EXCEL后如何关闭EXCEL进程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-7-4 10:32:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
读excel代码如下

  1. Function ImportDataSheet(sFileName,sSheetName,sDataTable)
  2.     On Error Resume Next
  3.                 Dim excelApp
  4.                 Dim excelSheet
  5.                 Dim colCount
  6.                 Dim rowCount
  7.                 Dim param
  8.                 DataTable.DeleteSheet sDataTable
  9.                 DataTable.AddSheet sDataTable
  10.                 Set excelApp = CreateObject("Excel.Application")
  11.                 excelApp.workBooks.open(sFileName)
  12.                 bSheetExist=False
  13.                 For i=1 to excelApp.sheets.Count
  14.                         If sSheetName=excelApp.sheets.item(i) Then
  15.                                 bSheetExist=True
  16.                         End If
  17.                 Next
  18.                 If bSheetExist Then
  19.                         Set excelSheet = excelApp.sheets.item(sSheetName)
  20.                         colCount = excelSheet.usedRange.columns.count
  21.                         For i = 1 to colCount
  22.                                 param = excelSheet.cells(1,i)
  23.                                 DataTable.GetSheet(sDataTable).AddParameter param,""
  24.                         Next
  25.                         rowCount = excelSheet.usedRange.rows.count
  26.                         For i = 2 to rowCount
  27.                         DataTable.GetSheet(sDataTable).SetCurrentRow i-1
  28.                         For j = 1 to colCount
  29.                                 param = excelSheet.cells(i,j)
  30.                                 DataTable.Value(j,sDataTable) = param
  31.                         Next
  32.                 Next
  33.                 excelApp.Application.Close
  34.                 excelApp.Application.Quit
  35.                 Set excelApp=Nothing
  36.                 End If
  37.                 If err.Number<>0 Then
  38.                         excelApp.Application.Close
  39.                         excelApp.Application.Quit
  40.                         Set excelApp=Nothing
  41.                         Call QTPSystemLog("ImportDataSheet",err)
  42.                         Err.Clear
  43.                 End If
  44.         On Error Goto 0
  45. End Function
复制代码
各位看看代码有什么错误,问题在于每次执行后进程中仍然会有Excel进程,而且频繁使用taskkill杀死Excel.exe进程,会导致taskkill进程死锁,各位有什么好方法。
请别说使用qtp自带的导入excel方法。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2012-7-4 12:03:17 | 只看该作者
这论坛怎么了,回复老是显示不成功,但实际成功了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-7-4 12:31:27 | 只看该作者
回复 4# user603
大哥您看代码了嘛?

  1. excelApp.Application.Close
  2. excelApp.Application.Quit
  3. Set excelApp=Nothing
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2012-7-4 12:54:27 | 只看该作者
回复 3# xiaoqiang_888

就算没帮到你,你也不用这样。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2012-7-4 14:24:38 | 只看该作者
回复 4# user603
嗯?晕 我哪样了?只是把你说的解决方案又贴出来了一边而已~您想到哪去了?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2012-7-4 15:59:22 | 只看该作者
Set wkBook=excelApp.workBooks.open(sFileName)
......
wkBook.Save
wkBook.Close
excelApp.Quit
Set wkBook=Nothing
Set excelApp=Nothing
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2012-7-4 16:42:39 | 只看该作者
回复 6# mimmy
读也要save?

还有其他代码是不是和下面的效果是一样的?
Set excelApp = CreateObject("Excel.Application")
excelApp.workBooks.open(sFileName)
……
excelApp.Application.Close
excelApp.Application.Quit
Set excelApp=Nothing

是不是Set wkBook=Nothing也相当吧excelApp.workBooks.open给关了?
但是发现vb对于线程以及对象的处理很弱,发现即使=Nothing了 但是对象未必销毁了
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2012-7-4 17:20:37 | 只看该作者
回复 7# xiaoqiang_888
只是读文件的话可以不用save
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2012-7-10 11:25:55 | 只看该作者
如6楼,添一句 excelApp.Quit
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-17 13:24 , Processed in 0.073541 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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