2014-11-18 2 views
5

통합 문서 내에서 하나의 시트 만 복사하고 다른 이름을 지정하고 싶습니다. '새 시트가'PointName1 '의 이름을 변경 한 복사본입니다다른 이름을 가진 시트를 복사하는 방법 - C# 및 Excel Interop

var pointName1 = workbook.Worksheets["PointName1"] as Worksheet; 
pointName1.Copy(); // How do I access this newly created sheet? 

이상적으로는이

pointName1.CopyTo("New Sheet");

같은 방법을 쓸 수 싶습니다.

간혹 PointName1이 통합 문서의 유일한 시트가되고 다른 시간이있을 것입니다.

+0

가능한 복제본 [C# - 한 Excel 통합 문서에서 다른 Excel 통합 문서로 복사하는 방법?] (http://stackoverflow.com/questions/3808368/c-sharp-how-to-copy-a-single- excel-worksheet-from-one-workbook-to-another) – MethodMan

+0

@DJKRAZE 동일한 통합 문서 내에서 복사해야합니다.당신이 제공 한 링크 (대부분의 다른 사람들과 함께)는 새로운 통합 문서로 복사하는 것을 다룹니다. –

답변

7

을 나는이 MSDN guide은 또한 당신의 questi 대답을 생각

Excel.Application xlApp = Marshal.GetActiveObject("Excel.Application") as Excel.Application; 
Excel.Workbook xlWb = xlApp.ActiveWorkbook as Excel.Workbook; 
Excel.Worksheet xlSht = xlWb.Sheets[1]; 
xlSht.Copy(Type.Missing, xlWb.Sheets[xlWb.Sheets.Count]); // copy 
xlWb.Sheets[xlWb.Sheets.Count].Name = "NEW SHEET";  // rename 

: - 여러 가지 방법이 아마 가장 쉬운 방법은 마지막 시트 후 복사 한 다음 인덱스를 사용하여 이름을 변경하는 것입니다 에.

시트의 색인을 얻으려면 Worksheet.Index property을 찾아보십시오.

3

복사 기능을 사용할 수 있어야하지만 같은 단계에서 시트의 이름을 바꿀 수는 없습니다. 문서에서

pointName1.Copy(pointName1, Type.Missing); //Place a copy before the existing sheet 

: 당신도 이전 또는 이후에 지정하지 않으면 는 마이크로 소프트 Office Excel에서 복사 된 시트가 포함 된 새 통합 문서를 작성하는 MSDN 문서는 추가 매개 변수를 보여줍니다.

시트의 이름을 바꾸려면 새 시트에 대한 참조 (색인 또는 이름으로)를 가져오고 Name 속성을 worksheet으로 사용하여 이름을 변경해야합니다.

편집 :

(원래 전에 사본 배치하고 이후) 원본 시트의 인덱스를 사용할 수 위의 당신은 코드를 사용하는 경우 : 당신이 이것을 달성 할 수

int index = pointName1.Index; 
pointName1.Copy(pointName1, Type.Missing); 
Worksheet newWS = (Worksheet)xlApp.Worksheets[index]; 
+0

새 통합 문서를 만들지 않고 같은 시트에 복사하고 싶습니다. 같은 통합 문서에서 새로 생성 된 시트에 대한 참조를 어떻게 안정적으로 얻을 수 있습니까? –

+0

@JoeBauer이 코드는 그것을 같은 노트에 복사합니다. 문서의 라인이 왜 있는지 보여줄 것입니다. 색인에 관해서는 위의 코드를 사용하면 이전에 삽입 한 코드가 원본 시트와 동일하게됩니다. – MikeH

+0

@JoeBauer 수정되었습니다. – MikeH

0

가장 쉬운 방법은 수락 된 답변에 제시된 마지막 시트 다음에 복사하는 것입니다.

엑셀 파일에 숨겨진 시트가 포함되어있는 경우 복사본이 보이는 시트와 숨겨진 시트 사이에 배치되므로 숨겨진 시트가 오른쪽으로 밀려납니다.

그런 다음 xlWb.Sheets[xlWb.Sheets.Count].Name = "NEW SHEET"으로 이름을 설정하면 새 복사본 대신 마지막 숨겨진 시트의 이름이 바뀝니다.

이름으로 새 복사본에 액세스하여이 문제를 해결할 수있었습니다 : xlWb.Sheets["_oldName_ (2)"].Name = "NEW SHEET".

xlWb.Sheets[xlWb.Sheets.Count].Name = "NEW SHEET"을 사용할 수있는 다른 수정 프로그램은 원하는 시트를 복사하기 전에 모든 시트를 표시하도록 설정합니다.

관련 문제