3

如何在当前打开的 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;
4

1 回答 1

3

您可以执行以下操作来获取对正在运行的 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错误处理程序。本文介绍了如何实现 Visual Studio 自动化;该技术与自动化 Excel 相同。

于 2012-09-17T10:31:55.250 回答