Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在通过自动化启动Excel时打开personal.xls工作簿?_C#_.net_Excel_Vba - Fatal编程技术网

C# 如何在通过自动化启动Excel时打开personal.xls工作簿?

C# 如何在通过自动化启动Excel时打开personal.xls工作簿?,c#,.net,excel,vba,C#,.net,Excel,Vba,我逐渐了解到,通过自动化打开Excel时,默认情况下不会打开其启动项,例如personal.xls工作簿。这给我的用户带来了一个问题,他们有时会通过我的应用程序打开Excel,然后在以后的其他工作中继续使用它 不幸的是,以这种方式打开的Excel实例不包含其个人宏。他们必须关闭Excel并从我的应用程序外部重新打开它,这样他们的宏才可用 通过自动化启动personal.xls工作簿时,是否有办法使Excel自动加载该工作簿?如果不是,那么打开该文件的最佳方式是什么?请记住,该文件不应该对用户可见

我逐渐了解到,通过自动化打开Excel时,默认情况下不会打开其启动项,例如personal.xls工作簿。这给我的用户带来了一个问题,他们有时会通过我的应用程序打开Excel,然后在以后的其他工作中继续使用它

不幸的是,以这种方式打开的Excel实例不包含其个人宏。他们必须关闭Excel并从我的应用程序外部重新打开它,这样他们的宏才可用

通过自动化启动personal.xls工作簿时,是否有办法使Excel自动加载该工作簿?如果不是,那么打开该文件的最佳方式是什么?请记住,该文件不应该对用户可见,而是保持隐藏状态

在创建对象和打开应用程序时,我没有找到任何选项来执行此操作

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

任何人能提供的任何建议或链接都将不胜感激。我已经搜索了很多关于这方面的信息,但似乎没有人试图绕过它。我使用的是Excel 2007和.NET 2.0。

我不知道这是否是您想要的,但我在Word中遇到了相同的附加组件问题。我已经解决了,但可能不是你需要的

自动保存文件,然后使用进程启动它

System.Diagnostics.Process.Start("excel.exe", "C:\\somefolder\\somefolder\\personal.xls");

我希望这能奏效。

事实证明,简单地查找并打开用户的personal.xls(或在较新版本的Excel中创建的personal.xlsx)就是答案

Excel.Application xlApp = new Excel.Application();
string filename = xlApp.StartupPath + "\\personal.xls";

xlApp.Workbooks.Open(filename, 0, false, 5, Missing.Value, Missing.Value, false,
    Missing.Value, Missing.Value, Missing.Value, false, Missing.Value, false,
    true, false);
personal.xls工作簿在后台隐藏打开(根据需要),并允许充分使用附加到它的所有宏


一旦我知道要寻找什么,我在这篇文章中找到了一些很好的信息:

你可能在寻找VBA而不是通过C#实现的自动化。当Excel通过自动化启动时是否加载了加载项?@squelos因为我的应用程序是用C#编写的,我别无选择,只能尝试通过同样的方法实现自动化。@Cutter否,我相信加载项没有加载。用户的personal.xls文件通常已经存在,因此我无法在没有找到它之前保存它,但打开它就是答案