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对象。
- 如何使用VSTO 2005 SE与C#Excel加载项创buildExcel 2003 UDF
- Excel COM添加位置
- 如何将图像添加到我的工作表而不提示replace(空)目标单元格(EPPlus)的内容?
- Microsoft Office Interop Excel – 指定Excel文件的名称
- Visual Studio Excel数据透视表不显示数据
- 什么是导出Excel文件的替代方法
- 从Excel中的Interop(C#)应用程序运行的Excelmacros将在其完成执行之前返回
- C#/ Excel:将Excel范围转换为具有正确数据types的数组
- 有没有办法在Excel中find范围内的范围?