我在UFT中有一个Web自动化框架,我可以更新自定义的Excel报告。在报告编辑部分代码期间,我面临一个与excel进程/ vba对象相关的奇怪问题。我将此代码存储在函数库中的函数库(.qfl)中,并且它被多次调用。问题是,有时UFT执行冻结,我看到EXCEL.exe的运行过程。在手动终止进程之前,屏幕上几乎没有任何事情发生。
On error resume next
Dim objExcel, objWorkbook, objWorkSheet
Set objExcel = createobject("excel.application")
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Open("SheetLocation")
Set objWorkSheet = objWorkbook.WorkSheets("SheetName")
intStepRow = objWorkSheet.Cells.Find("WC_01").Row
objWorkSheet.Cells(intStepRow, 7).Value = "SomeValue"
objWorkSheet.Cells(intStepRow, 8).Value = "SomeValue"
objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Close True
objExcel.Quit()
Set objWorkSheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
On error goto 0
我尝试在函数末尾添加一个代码来杀死进程,但没有运气。我还尝试将excel.Visible
和.Display
设置为true
,看看哪里出了问题,但我什么也看不见。我也尝试删除错误处理,但同样没有运气。
编辑:
在为每一行启用日志记录后,我发现下面的行正在冻结执行
Set objWorkbook = objExcel.Workbooks.Open("SheetLocation")
提前感谢您的时间和建议:)
答案 0 :(得分:-1)
或者我发现它很有趣,你可以尝试在realese对象之后使用objExcel.quit(),即在设置wroksheet,workbook,excel = nothing之后。 例如
Set objWorkSheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
objExcel.Quit()