grzesiek Posted December 12, 2018 Posted December 12, 2018 When I use excel sometimes an error appears 'Variable must be of type object' which terminates the script, how can I prevent this? I would like to silently receive an error and not terminate the script. This is an example, which when executed throws an error. Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc") Func _ErrFunc($oError) EndFunc $oExcel = ObjCreate("Excel.Application") $oExcel.visible = 1 $oExcel.workbooks.add() WinClose(HWnd($oExcel.hwnd)) $oExcel.cells(1, 1).value = 1
jdelaney Posted December 12, 2018 Posted December 12, 2018 Check that a variable is an object first. ..isobj () IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
grzesiek Posted December 12, 2018 Author Posted December 12, 2018 IsObj returns true even if excel is closed. But anyway it's not practical to check object everytime it is used.
jdelaney Posted December 12, 2018 Posted December 12, 2018 (edited) I disagree with you. you should never check a property or class of an object without verifying the parent exists. ..specifically is obj on the oexcell.cells (1,1). I also don't think that i should have to convert python integers to strings for console outputs. ..but you have to work with what you are given Edited December 12, 2018 by jdelaney IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
grzesiek Posted December 12, 2018 Author Posted December 12, 2018 So I will have to do this like in the example below, assign cell to a variable, and then the error doesn't appear. Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc") Func _ErrFunc($oError) EndFunc $oExcel = ObjCreate("Excel.Application") $oExcel.visible = 1 $oExcel.workbooks.add() WinClose(HWnd($oExcel.hwnd)) $oCell = $oExcel.cells(1, 1) $oCell.value = 1
water Posted December 12, 2018 Posted December 12, 2018 I suggest to use the Excel UDF that comes with AutoIt - error handling included My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now