VSTO:在调试开发期间指定Word文档

时间:2013-08-03 21:35:58

标签: vba vsto

在Visual Studio VSTO中,如何在每次运行项目时指定要打开的文档进行调试?

默认情况下,它始终打开一个空白文档,当然我想测试文档中已存在的功能。

2 个答案:

答案 0 :(得分:2)

我尝试过Cor_Blimey建议,但它只会在某些内容发生变化时打开指定的内容(还没有想到什么)。此外,断点在VS2013实施上层解决方案时至少不起作用 所以我做的是每次启动加载项时打开特定的调试/测试文件 它运行良好,断点功能正常,没有加载空白工作簿,并且在下一个调试会话中可以更改工作表。 为了避免在已发布的加载项中打开文件,我将其放在 #if DEBUG 中。 有关该方法的更多信息为here,但必须按照here所述的预防措施使用。

         private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
#if (DEBUG)
            this.Application.Workbooks.Open("C:\\Users\\c563368\\Documents\\Visual Studio 2013\\Projects\\...\\debug.xls");
#endif
        }

但是有一个缺点,只要您调试环境(visual studio)正在运行,Office将始终从调试文件夹中打开加载项构建。 您可以通过将office应用程序作为外部程序运行来避免这种情况,如here所述。

答案 1 :(得分:1)

您需要使用可以设置为在成功构建上运行的命令行(无法仅在调试时运行它(如在F11中),并且您无法在每个配置的基础上进行设置。但是,有一个很好的解决方法,只能在Debug配置等上做一些事情。

基本行为是:

打开解决方案。打开项目的属性。转到构建事件。在Post-Build事件命令行中输入Word的路径(例如“C:\ Program Files(x86)\ Microsoft Office \ Office14 \ Winword”)(或者如果它在你的%Path%中,那么只是Winword)并传入要作为参数打开的文档的路径。这将在每次成功构建时打开Word和文档(您可以将触发器设置为所有构建,无论是否成功等)

然而,我更喜欢将其指向批处理文件,将有关构建事件的详细信息作为批处理文件的参数传递。然后,在批处理文件中,我运行逻辑来决定它是否应该启动Word,打开文档等。

例如,您可以将其指向

$(ProjectDir)buildScript.bat "$(ConfigurationName)"

然后在批处理文件中有类似

的内容
if %1=="Debug - Excel" "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe" "%~dp0\testbook.xlsx"

这将在项目目录中运行名为buildScript的批处理文件。第一个参数(批处理文件中要访问的%1)将是配置。因此,如果配置是例如,您可以将批处理文件设置为启动Word并将文档作为参数传入。 “Debug”但不是“Release”,从而避免了VS2012 Post-Build Event命令行中的限制。

编辑:

可以在http://support.microsoft.com/kb/210565

找到Word的开关列表

指示Word执行操作所需的内容取决于您正在制作的插件的类型:

如果它是标准的COM插件,那么,只要DLL已注册并且您已设置注册表项(或在Word插件设置中选择它)以打开插件,那么它应该在Word打开时打开。

如果是插件文档,则程序不同 - >尝试使用commnd开关来指示Word打开特定的插件文档。

我对Excel COM插件更熟悉,因此您必须尝试使用​​Word插件的特性。但基本原则是使用post-build事件的commnd行,再加上Winword的正确开关和参数。

希望有所帮助。