2015-06-02 165 views
2

你好,我一直在嘗試在另一張紙上使用PasteSpecial粘貼值,但我嘗試過的每一件事我都會收到相同的錯誤。在Excel中粘貼值C#

Range類的PasteSpecial方法失敗

xl.Application xlApp = Globals.ThisWorkbook.Application; 
xl.Workbook wb = xlApp.ActiveWorkbook; 
xl.Worksheet data = wb.Sheets["Data"]; 
xl.Worksheet datasheet = wb.Sheets["DataSheet"]; 
xl.Worksheet pivot = wb.Sheets["Pivot"]; 
xl.Range dataRng = data.Range["A1:C" + 
     xlApp.WorksheetFunction.CountA(data.Range["A:A"])]; 
xl.Range pivotRng = pivot.Range["A1"]; 

addPivot ap = new addPivot(); 
ap.DataRange = dataRng; 
ap.DestRng = pivotRng; 
ap.PivotSheet = pivot; 
ap.createPivot("FullName","Date"); 

pivot.PivotTables("PivotTable1").NullString = "0"; 
pivot.UsedRange.Copy(); 

datasheet.Range["A2:GT999"].ClearContents(); 

datasheet.Range["A2"].PasteSpecial(xl.XlPasteType.xlPasteValues, 
            xl.XlPasteSpecialOperation.xlPasteSpecialOperationNone, 
            System.Type.Missing, System.Type.Missing); 

datasheet.Range["2:2"].ClearContents(); 

我已經試過

datasheet.Range["A2"].PasteSpecial(xl.XlPasteType.xlPasteValues 

datasheet.Range["A2"].PasteSpecial(xl.XlPasteType.xlPasteValues, 
            xl.XlPasteSpecialOperation.xlPasteSpecialOperationNone) 

,你在上面看到的東西。

謝謝!

+0

這是一個錯字或者是什麼意思:datasheet.Range [「2:2」]。ClearContents(); 它應該是這樣的: datasheet.Range [「A2:A2」]。ClearContents(); –

+1

不,那是正確的,清除整個行2的內容 – user3120232

回答

1

Copy之前執行ClearContents。當您清除這些單元格時,Excel將刪除您複製的範圍(與程序中的ESC相同)。然後,您正在嘗試PasteSpecial,但剪貼板中不再有任何內容。

//...code above 

datasheet.Range["A2:GT999"].ClearContents(); 

pivot.UsedRange.Copy(); 

datasheet.Range["A2"].PasteSpecial(xl.XlPasteType.xlPasteValues, 
            xl.XlPasteSpecialOperation.xlPasteSpecialOperationNone, 
            System.Type.Missing, System.Type.Missing);         
//code below... 

如果你正在調試這一步一步的,你會看到周圍的複製虛線框範圍ClearContents通話後消失。 Excel有點奇怪(但可以預測),關於複製範圍何時被遺忘。編輯Workbook中的任意位置的單元格是讓它忘記的一個可靠方法。