You can use the ISheet.CopyAfter/CopyBefore methods to copy a single sheet, in its entirety and including named ranges, to some other location. This "other location" could be within the same workbook as the sheet you are copying; or an entirely different workbook. Example:
// Make copy of "Sheet1" in sourceWorkbook after "Sheet3" in destWorkbook
IWorksheet newSheet = sourceWorkbook.Worksheets["Sheet1"].CopyAfter(destWorkbook.Worksheets["Sheet3"]);