xlApp.ActiveWorkbook返回null

我有一个2010年的Excelfunction区加载项。 当你按下一个button,它只是写一些数据到Excel应用程序。 为了写这个数据我需要得到活动工作表。 为了获得活动工作表,我需要activeWorkBook。 我可以得到xlApp罚款

xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); 

它检索xlApp罚款但是,每当我尝试获得活动工作簿,它返回null。 无论。 除非我重新启动我的电脑。 然后,它的工作,但只有第一次。 以下是上下文中的整个代码块。 我想知道如何解决xlApp.ActiveWorkBook为空。 这样我可以得到活动的工作表。 然后将数据写入活动工作表。

 public void sendData() { Excel.Application xlApp = null; Excel.Workbook xlWorkBook = null; Excel.Workbooks xlWorkBooks = null; Excel.Worksheet xlWorkSheet = null; object misValue = System.Reflection.Missing.Value; try { xlApp = new Excel.Application(); //xlWorkBooks = xlApp.Workbooks; //xlWorkBook = xlWorkBooks.Add(Properties.Settings.Default.FileToSend); //xlWorkSheet = xlWorkBook.Sheets[1]; xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); xlWorkBook = (Excel.Workbook)xlApp.ActiveWorkbook; xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet; } catch (Exception ex) { // handle error... } finally { if (xlWorkSheet != null) Marshal.ReleaseComObject(xlWorkSheet); if (xlWorkBook != null) Marshal.ReleaseComObject(xlWorkBook); if (xlWorkBooks != null) Marshal.ReleaseComObject(xlWorkBooks); if (xlApp != null) Marshal.ReleaseComObject(xlApp); } 

提前致谢!

您可能通过调用GetActiveObject来获取错误的Excel实例。 使用传递到您的COM加载项的OnConnection的应用程序引用(或者您的function区代码被引导)。

如果您使用Excel-DNA框架来创build您的托pipeExcel外接程序,那么您可以通过调用ExcelDnaUtil.Application来获得正确的Application对象。