Excel c#工作簿自动更改



我写了一个Excel插件(Office 2013),在那里我从odbc连接生成数据报告。

检查当前工作簿是否包含空工作表。如果没有,我添加一个新的工作簿,并把所有的数据。但在完成报告后,它会自动切换到第一个工作簿…我只使用ActiveWorkbook。激活…有人知道为什么会这样吗,我该怎么做才能改变吗?我的Report创建与Backgroundworker一起使用…在worker_hasFinished()上,我也尝试使用Application.Workbooks[Application.Workbook.Count].Activate();

激活最后一个工作簿

任何想法?

更新:代码

在单页完成后,我调用这个方法:

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-Method是一个getSheetByName-Method

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():

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();

最后一个代码片段中的this是什么?扩展了system。windows。forms。form ?

this.Close();做什么?

在我看来,你的

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

可能永远不会被调用,因为this之前是关闭的。

最新更新