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

问题描述 投票:0回答:2

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

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

excel vba vbscript qtp hp-uft
2个回答
0
投票

我遇到了同样的问题,有时甚至在执行与 excel 相关的代码部分之前,UFT 就停止响应。

必须将代码保存在 .vbs 文件中并使用 SystemUtil.Run fileName.vbs 调用


-1
投票

或者我觉得它很有趣,你能不能在你 realese 对象后尝试使用 objExcel.quit() ,即在你设置 wroksheet、workbook、excel = nothing 之后。 例如

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

© www.soinside.com 2019 - 2024. All rights reserved.