| 1 |  | The _ExcelSheetAddNew() function abnormally terminates script execution with a COM error if called specifying a sheet name that already exists within the workbook.  Also, after the error, the workbook will erroneously contain a new generically named sheet ("Sheet 1", "Sheet 2", etc). | 
                        | 2 |  |  | 
                        | 3 |  | The following change adds a loop to check if the sheet is already in the workbook, and kicks out a new @error value (@error = 2) if found. | 
                        | 4 |  |  | 
                        | 5 |  | {{{ | 
                        | 6 |  | ; #FUNCTION# ==================================================================================================================== | 
                        | 7 |  | ; Name...........: _ExcelSheetAddNew | 
                        | 8 |  | ; Description ...: Add new sheet to workbook - optionally with a name. | 
                        | 9 |  | ; Syntax.........: _ExcelSheetAddNew($oExcel[, $sName = ""]) | 
                        | 10 |  | ; Parameters ....: $oExcel - An Excel object opened by a preceding call to _ExcelBookOpen() or _ExcelBookNew() | 
                        | 11 |  | ;                  $sName - The name of the sheet to create (default follows standard Excel new sheet convention) | 
                        | 12 |  | ; Return values .: Success      - Returns 1 | 
                        | 13 |  | ;                  Failure              - Returns 0 and sets @error on errors: | 
                        | 14 |  | ;                  |@error=1     - Specified object does not exist | 
                        | 15 |  | ;                  |@error=2     - Specified sheet already exists | 
                        | 16 |  | ; Author ........: SEO <locodarwin at yahoo dot com> | 
                        | 17 |  | ; Modified.......: litlmike, Spiff59 | 
                        | 18 |  | ; Remarks .......: None | 
                        | 19 |  | ; Related .......: | 
                        | 20 |  | ; Link ..........: | 
                        | 21 |  | ; Example .......: Yes | 
                        | 22 |  | ; =============================================================================================================================== | 
                        | 23 |  | Func _ExcelSheetAddNew($oExcel, $sName = "") | 
                        | 24 |  | If Not IsObj($oExcel) Then Return SetError(1) | 
                        | 25 |  | If $sName Then | 
                        | 26 |  | Local $iTemp = $oExcel.ActiveWorkbook.Sheets.Count | 
                        | 27 |  | For $xx = 1 To $iTemp | 
                        | 28 |  | If $oExcel.ActiveWorkbook.Sheets($xx).Name = $sName Then | 
                        | 29 |  | Return SetError(2) | 
                        | 30 |  | EndIf | 
                        | 31 |  | Next | 
                        | 32 |  | EndIf | 
                        | 33 |  | Local $oSheet = $oExcel.ActiveWorkBook.WorkSheets.Add().Activate() | 
                        | 34 |  | If $sName Then $oExcel.ActiveSheet.Name = $sName | 
                        | 35 |  | Return 1 | 
                        | 36 |  | EndFunc   ;==>_ExcelSheetAddNew | 
                        | 37 |  | }}} | 
                      
                        |  | 1 | As the Excel UDF is being brushed up this seems to be the right moment to reopen and solve this ticket. |