Moving the following line in the procedure a couple of lines up will do, no need for overloading new_sheet
t_sheet := nvl( p_sheet, workbook.sheets.count() );
So change it to:
if p_sheet is null
then
new_sheet;
end if;
t_sheet := nvl( p_sheet, workbook.sheets.count() );