以编程方式更改工作簿时隐藏Excel 2013

时间:2013-07-12 08:24:47

标签: c# excel interop

Excel 2013 的一个非常良好新功能是,它无法在一个应用程序中强制显示多个Excel工作簿。这似乎是我的问题的原因:

如果我使用c#以编程方式打开Excel工作簿,则interop Excel 2013将以新的应用程序窗口启动。我可以在没有问题的情况下使用代码中的工作簿,但我想隐藏应用程序。 使用

   Excel.Application excelApp = new Excel.Application();
    ......
    excelApp.Workbooks.Open(...);
    excelApp.Visible = false;

显示后隐藏应用程序窗口。有没有办法停止在Excel 2010或更早版本中显示应用程序?

4 个答案:

答案 0 :(得分:1)

在我的Excel 2013中,使用excelApp = new Excel.Application不会显示任何窗口。

可能是打开的工作簿中有一些显示窗口的VBA代码吗?

答案 1 :(得分:0)

所以我知道这个问题已经过时了但是我需要一个答案而且没有一个给定的答案对我有用。我最初只是在初始化时将Visible设置为false,以避免窗口在隐藏之前闪烁。

Excel.Application excelApp = new Excel.Application() { Visible = false };

答案 2 :(得分:0)

在打开任何工作簿之前隐藏您的代码已启动的Excel应用程序:

Excel.Application excel = new Excel.Application();
excel.Visible = false;
[...]
Excel.Workbook workbook;
workbook = excel.Workbooks.Open(...);

答案 3 :(得分:-2)

您应该始终将Visible放入try / catch-block

Excel.Application xlsApp = new Excel.Application();
try
{
     // Must be surrounded by try catch to work.
     // http://naimishpandya.wordpress.com/2010/12/31/hide-power-point-application-window-in-net-office-automation/
     xlsApp.Visible = false;
     xlsApp.DisplayAlerts = false;
}
catch (Exception e)
{
     Console.WriteLine("-------Error hiding the application-------");
     Console.WriteLine("Occured error might be: " + e.StackTrace);
}
 Excel.Workbook workbook;
 workbook = xlsApp.Workbooks.Open(File, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                            Type.Missing, Type.Missing);