如何在当前打开的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;
答案 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相同。