After copy to destination according to the solution of @Graeme_Grant we can clear all the cells in destination which have a formula:

// paste all copied cells with formatting & formulas worksheet2.UsedRange.PasteSpecial( XlPasteType.xlPasteAll, XlPasteSpecialOperation.xlPasteSpecialOperationNone, Type.Missing, Type.Missing); // // Clear all cells with formula in destination // foreach(Range cell in worksheet2.UsedRange) { if (cell.HasFormula) { cell.Clear(); } }

**Version 2**Cell by cell (most probably not efficient)

string safeExcelFilePath = @"c:\temp\cp.excel"; string excelFile1 = Path.Combine(safeExcelFilePath, "Book1.xlsx"); string excelFile2 = Path.Combine(safeExcelFilePath, "Book2.xlsx"); _Application _excel = new _Excel.Application(); _excel.DisplayAlerts = false; Workbook workbook1 = _excel.Workbooks.Open(excelFile1); Workbook workbook2 = _excel.Workbooks.Open(excelFile2); Worksheet worksheet1 = workbook1.Worksheets["Sheet1"]; Worksheet worksheet2 = workbook2.Worksheets["Sheet1"]; // Copy cell by cell for (int rowIx= 1; rowIx <= worksheet1.UsedRange.Rows.Count; rowIx++) { for (int colIx= 1; colIx <= worksheet1.UsedRange.Columns.Count; colIx++) { Range src = worksheet1.Cells[rowIx, colIx]; if (!src.HasFormula) { Range dst = worksheet2.Cells[rowIx, colIx]; dst.Value = src.Value; } } } // overwrite the workbook workbook2.SaveAs( Filename: excelFile2, AccessMode: XlSaveAsAccessMode.xlNoChange); workbook2.Close(); workbook1.Close(); _excel.Quit();

`// If values only, then change XlPasteType.xlPasteAll //to XlPasteType.xlPasteValues`

Did you try that?`worksheet2.UsedRange.PasteSpecial(XlPasteType.xlPasteValues, .....);`