如何从我的应用程序中打开当前的Excel实例?

时间:2012-09-17 10:18:32

标签: c# excel

如何在当前打开的Microsoft Excel实例中打开Excel工作表?当我使用我的代码时,会打开一个新的Excel实例。

 private Excel.Application xlApp;
 private Excel.Workbook xlWorkBook;
 private Excel.Worksheet xlWorkSheet;

 xlApp = new Excel.Application();
 xlApp.Visible = true;

 xlWorkBook = xlApp.Workbooks.Open(textBox1.Text);
 xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作来获取对正在运行的Excel实例的引用(如果有):

public Excel.Application TryGetExistingExcelApplication()
{
    try
    {
        object o = Marshal.GetActiveObject("Excel.Application");
        return (Excel.Application)o;
    }
    catch (COMException)
    {
        // Probably there is no existing Excel instance running, return null
        return null;
    }
}

一旦有对正在运行的实例的引用,就可以访问它的Workbooks集合。

一个警告:如果您尝试自动化现有的Excel实例,则可能会出现“服务器忙”异常。为避免这种情况,您可以实现IOleMessageFilter错误处理程序。 This article描述了如何自动化Visual Studio;该技术与自动化Excel相同。