51Testing软件测试论坛
标题:
VBS读EXCEL后如何关闭EXCEL进程
[打印本页]
作者:
xiaoqiang_888
时间:
2012-7-4 10:32
标题:
VBS读EXCEL后如何关闭EXCEL进程
读excel代码如下
Function ImportDataSheet(sFileName,sSheetName,sDataTable)
On Error Resume Next
Dim excelApp
Dim excelSheet
Dim colCount
Dim rowCount
Dim param
DataTable.DeleteSheet sDataTable
DataTable.AddSheet sDataTable
Set excelApp = CreateObject("Excel.Application")
excelApp.workBooks.open(sFileName)
bSheetExist=False
For i=1 to excelApp.sheets.Count
If sSheetName=excelApp.sheets.item(i) Then
bSheetExist=True
End If
Next
If bSheetExist Then
Set excelSheet = excelApp.sheets.item(sSheetName)
colCount = excelSheet.usedRange.columns.count
For i = 1 to colCount
param = excelSheet.cells(1,i)
DataTable.GetSheet(sDataTable).AddParameter param,""
Next
rowCount = excelSheet.usedRange.rows.count
For i = 2 to rowCount
DataTable.GetSheet(sDataTable).SetCurrentRow i-1
For j = 1 to colCount
param = excelSheet.cells(i,j)
DataTable.Value(j,sDataTable) = param
Next
Next
excelApp.Application.Close
excelApp.Application.Quit
Set excelApp=Nothing
End If
If err.Number<>0 Then
excelApp.Application.Close
excelApp.Application.Quit
Set excelApp=Nothing
Call QTPSystemLog("ImportDataSheet",err)
Err.Clear
End If
On Error Goto 0
End Function
复制代码
各位看看代码有什么错误,问题在于每次执行后进程中仍然会有Excel进程,而且频繁使用taskkill杀死Excel.exe进程,会导致taskkill进程死锁,各位有什么好方法。
请别说使用qtp自带的导入excel方法。
作者:
user603
时间:
2012-7-4 12:03
这论坛怎么了,回复老是显示不成功,但实际成功了。
作者:
xiaoqiang_888
时间:
2012-7-4 12:31
回复
4#
user603
大哥您看代码了嘛?
excelApp.Application.Close
excelApp.Application.Quit
Set excelApp=Nothing
复制代码
作者:
user603
时间:
2012-7-4 12:54
回复
3#
xiaoqiang_888
就算没帮到你,你也不用这样。
作者:
xiaoqiang_888
时间:
2012-7-4 14:24
回复
4#
user603
嗯?晕 我哪样了?只是把你说的解决方案又贴出来了一边而已~您想到哪去了?
作者:
mimmy
时间:
2012-7-4 15:59
Set wkBook=excelApp.workBooks.open(sFileName)
......
wkBook.Save
wkBook.Close
excelApp.Quit
Set wkBook=Nothing
Set excelApp=Nothing
作者:
xiaoqiang_888
时间:
2012-7-4 16:42
回复
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了 但是对象未必销毁了
作者:
mimmy
时间:
2012-7-4 17:20
回复
7#
xiaoqiang_888
只是读文件的话可以不用save
作者:
xjwldlover
时间:
2012-7-10 11:25
如6楼,添一句 excelApp.Quit
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2