我有一個UFT的Web自動化框架,我必須更新自定義的Excel報告。在編輯部分代碼的報告中,我遇到了一個與excel process/vba對象有關的奇怪問題。我將這段代碼存儲在一個函數內部的函數庫(.qfl)中,並且它被多次調用。問題是,有時UFT執行凍結,我看到一個正在運行的EXCEL.exe進程。在手動終止進程之前,屏幕上幾小時內沒有任何事情發生。UFT:Excel過程保持運行並凍結執行
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")
感謝您的時間和建議:)
您可能必須在'Find'一步發生的錯誤的情況。如果您正在搜索的值不存在,那麼接下來的兩個步驟將暫停代碼。你有沒有嘗試單步執行代碼?並且肯定會刪除「On Error Resume Next」,因爲它只是爲了隱藏您遇到的任何錯誤。 – Dave
是的,我嘗試刪除錯誤恢復下一步,但沒有運氣。 'Find'方法將始終獲得表單中存在的值。代碼暫停是隨機的。它可以發生任何價值。 – yudi2312
插入日誌記錄步驟,跟蹤每行代碼並記錄它是否成功。這樣,當下一次停下來時,你會得到具體細節。這將告訴你哪一步出了問題,你將能夠專注於實際問題。目前你不知道你需要解決什麼問題。 – Dave