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()
도움없이 코드를 추가하십시오 –
코드를 추가했습니다 –
문제를 이해하려면 다음을 수행하십시오 :'target' 다음에'first'을 활성화하고'target'이 활성화 될 것으로 기대하십니까? 나는 당신이 워크 북을 혼동스럽게 생각할지도 모른다라고 생각한다. 그렇다면 오해 할 수도있다. –