UFT:Excel流程保持运行并冻结执行

时间:2017-04-15 14:13:57

标签: excel vba vbscript qtp hp-uft

我在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")

提前感谢您的时间和建议:)

1 个答案:

答案 0 :(得分:-1)

或者我发现它很有趣,你可以尝试在realese对象之后使用objExcel.quit(),即在设置wroksheet,workbook,excel = nothing之后。 例如

Set objWorkSheet = Nothing Set objWorkbook = Nothing Set objExcel = Nothing objExcel.Quit()