2014-05-11 2 views
0

ODBC 연결에서 데이터 보고서를 작성한 Excel AddIn (Office 2013)을 작성했습니다.Excel C# 통합 문서가 자동으로 변경됩니다.

현재 통합 문서에 빈 시트가 있는지 확인합니다. 그렇지 않다면 새로운 일기 예보를 추가하고 모든 데이터를 입력하십시오. 그러나 보고서를 끝내면 자동으로 첫 번째 통합 문서로 전환됩니다 ... ActiveWorkbook.Activate 만 사용합니다 ... 왜 그렇게 생각하고 변경해야합니까? Work_hasFinished()에 대한 보고서 작성은 Backgroundworker와 함께 진행됩니다. 또한 Application.Workbooks [Application.Workbook.Count] .Activate();로 마지막 통합 문서를 활성화하려고합니다.

아이디어가 있으십니까?

가 UPDATE : 하나의 시트가 완료되면 코드

, 나는이 메서드를 호출 :

Excel.Workbook workbook = Globals.ThisAddIn.Application.ActiveWorkbook; 
Excel.Worksheet targetSheet = getSheet(SheetName); 
Excel.Worksheet firstSheet = (Excel.Worksheet)workbook.Worksheets[1]; 
targetSheet.Activate(); 
targetSheet.Range["A1"].Select(); 
firstSheet.Activate(); 
firstSheet.Range["A1"].Select(); 

SHEETNAME는 현재 시트의 이름을 ... getSheet-방법은 getSheetByName-방법

입니다

Globals.ThisAddIn.Application.ScreenUpdating = true; 
this.ReportProgressBar.Style = ProgressBarStyle.Continuous; 
this.ReportProgressBar.Value = 100; 
this.Close(); 
Globals.ThisAddIn.Application.Workbooks[Globals.ThisAddIn.Application.Workbooks.Count].Activate(); 
SystemSounds.Beep.Play(); 
:
public static Excel.Worksheet getSheet(string SheetName) 
{ 
    Excel.Workbook workbook = Globals.ThisAddIn.Application.ActiveWorkbook; 
    Excel.Worksheet returnSheet; 

    foreach (Sheet sheet in workbook.Sheets) 
    { 
     if (sheet.Name.Equals(SheetName)) 
     { 
      return sheet; 
     } 
    } 

    returnSheet = Globals.ThisAddIn.Application.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Excel.XlSheetType.xlWorksheet); 
    returnSheet.Name = SheetName; 
    returnSheet.Move(After: workbook.Sheets[workbook.Sheets.Count]); 

    return returnSheet; 
} 

그리고 적어도 worker_hasFinished()

+0

도움없이 코드를 추가하십시오 –

+0

코드를 추가했습니다 –

+1

문제를 이해하려면 다음을 수행하십시오 :'target' 다음에'first'을 활성화하고'target'이 활성화 될 것으로 기대하십니까? 나는 당신이 워크 북을 혼동스럽게 생각할지도 모른다라고 생각한다. 그렇다면 오해 할 수도있다. –

답변

0

마지막 코드 조각에 this은 무엇입니까? System.Windows.Forms.Form을 확장하는 것?

this.Close();의 기능은 무엇입니까? this 이후

Globals.ThisAddIn.Application.Workbooks[Globals.ThisAddIn.Application.Workbooks.Count].Activate(); 

단순히 호출되지는 결코 할 수 귀하의

내가 볼때는, 전에 닫힙니다.

관련 문제