关于创建Excel自动化模型对象和释放资源的问题
如以下脚本:Function getRowColumn(excelPath,x,y)
Set excelApp = CreateObject("excel.application")
Set oWorkbook = excelApp.Workbooks.Open(excelPath)
Set oSheet = excelApp.Sheets.Item(1)
getRowColumn = oSheet.cells(x,y)
excelApp.Quit
Set oSheet = Nothing
Set oWorkbook = Nothing
Set excelApp = nothing
End Function
能否将红色部分和蓝色部分封装起来,每次需要时直接调用,无需每次都创建和释放,有没有好的提议 回复 1# fsweicaixia
你这个已经封装在一个FUNCTION里了啊,
每次用直接用这个Function就行了,创建和释放交给计算机做就行了。
这样就行了 我是懒得重复写,
我修改成这样了
Dim excelApp 'As Excel.Application
Dim oWorkbook 'As Excel.workbook
Dim oSheet 'As Excel.worksheet
FunctioncreateExcel(excelApp,oWorkbook,oSheet,filepath,oSheetName)
set excelApp = CreateObject("excel.application")
set oWorkbook = excelApp.Workbooks.Open(filepath)
' set oSheet = excelApp.Sheets.Item(1)
set oSheet =oWorkbook.Worksheets(oSheetName)
End function
Function CloseExcel(excelApp,oWorkbook,oSheet)
excelApp.Quit()
set oSheet = Nothing
set oWorkbook = Nothing
set excelApp = Nothing
End function
创建和关闭时直调用一下就成了 回复 3# fsweicaixia
怎么会重复写呢?你是想要取数据么?如果是取数据,可以一次性全部取出,存至一个二维数组,这样只要打开关闭一次EXCEL了。
而且就算每次只要一条,你最上面的函数也是这样实现的。
你分成两个,我不觉的会更简单,而且担心会有问题。 因为在每个步骤都要写入一行数据到excel,再说了,通用的excel方法也好几个那,每个方法都要写创建关闭的步骤, 因为在每个步骤都要写入一行数据到excel,再说了,通用的excel方法也好几个那,每个方法都要写创建关闭的步骤, 回复 6# fsweicaixia
每次创建和关闭的动作反正是用计算机完成的,大可不必省去。
难道还怕电脑累着不成?
到是你如果只在脚本前后只是用一次打开和关闭动作,如果半路脚本出现了问题场景恢复后重新执行,或者半路终止运行之类的情况,难道你不怕Excel读取进程未关闭造成下一轮的测试失败? 我贴脚本出来吧
Function getCellValue(ByVal filepath,ByVal columnname,ByVal columnValue,ByVal columnum)
'' Err = 0
' On Error Resume Next
createExcel excelApp,oWorkbook,oSheet,filepath,"Sheet1"
M = oSheet.UsedRange.Count'统计含有数据单元格
' msgbox M
Set oCell = oSheet.Range(columnname & M).Find(columnvalue)'查找功能点编号为ModuleCade单元格
If oCell Is Nothing Then
GetDataCoordinate = "Not Found"
Else
rnum = oCell.Row
getCellValue = oSheet.cells(rnum,columnum)
End if
CloseExcel excelApp,oWorkbook,oSheet
End Function
Function getRowCount(excelPath)
Set excelApp = CreateObject("excel.application")
Set oWorkbook = excelApp.Workbooks.Open(excelPath)
Set oSheet = excelApp.Sheets.Item(1)
getRowCount = oSheet.UsedRange.Rows.Count
CloseExcel excelApp,oWorkbook,oSheet
End Function
FunctioncreateExcel(excelApp,oWorkbook,oSheet,filepath,oSheetName)
set excelApp = CreateObject("excel.application")
set oWorkbook = excelApp.Workbooks.Open(filepath)
' set oSheet = excelApp.Sheets.Item(1)
set oSheet =oWorkbook.Worksheets(oSheetName)
End function
Function CloseExcel(excelApp,oWorkbook,oSheet)
excelApp.Quit()
set oSheet = Nothing
set oWorkbook = Nothing
set excelApp = Nothing
End function :(好高端、求指教、 一点也不高端 就是拆分了一下 懒得每次都要写 一点也不高端 就是拆分了一下 懒得每次都要写
页:
[1]