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方法。 这论坛怎么了,回复老是显示不成功,但实际成功了。 回复 4# user603
大哥您看代码了嘛?
excelApp.Application.Close
excelApp.Application.Quit
Set excelApp=Nothing
回复 3# xiaoqiang_888
就算没帮到你,你也不用这样。 回复 4# user603
嗯?晕 我哪样了?只是把你说的解决方案又贴出来了一边而已~您想到哪去了? Set wkBook=excelApp.workBooks.open(sFileName)
......
wkBook.Save
wkBook.Close
excelApp.Quit
Set wkBook=Nothing
Set excelApp=Nothing 回复 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了 但是对象未必销毁了 回复 7# xiaoqiang_888
只是读文件的话可以不用save 如6楼,添一句 excelApp.Quit
页:
[1]