The below example assumes you are copying from your source (template) workbook to another workbook. Your question isn't clear on that point, so this is what I assumed.
Dim strTemplatePath As String = "...your source workbook path and name..."
Dim strDestinationPath As String = "...your destination workbook path and name..."
Dim sourceWorkBook As Excel.Workbook
Dim destWorkBook As Excel.Workbook
sourceWorkBook = objExcelAppDataSheet.Workbooks.Add(strTemplatePath)
destWorkBook = objExcelAppDataSheet.Workbooks.Add(strDestinationPath)
Dim mySourceSheetName As String = "...your source worksheet name..."
Dim sourceWorkSheet As Excel.Worksheet
sourceWorkSheet = sourceWorkBook.Sheets(mySourceSheetName)
//Copies the source worksheet to the destination workbook, places it after the last
//sheet in the destination workbook.
sourceWorkSheet.Copy(, destWorkBook.Sheets(destWorkBook.Sheets.Count))
destWorkBook.SaveAs(strDestinationPath)
destWorkBook.Close()
sourceWorkBook.Close()
If you are just copying and pasting in the source workbook ( not using a different destination ) you can just remove the destination workbook portions of the code. Then your Copy statement would look like this:
sourceWorkSheet.Copy(, sourceWorkBook.Sheets(sourceWorkBook.Sheets.Count))
This will place the source sheet after the last sheet in your source workbook.
If you want to duplicate the formatting that includes column widths, row heights, cell merging, etc. in your new sheet, you need to copy the entire sheet.
If you don't want all of the data on the source sheet, but you still want the column widths, etc., you must first copy the entire sheet; then clear the newly copied sheet. This will remove the data, but not the formatting. After that, then you can copy just the range of cells that has the data you want.