从外部应用程序编写 Word 文档脚本

本文关键字:文档 脚本 Word 应用程序 从外部 | 更新日期: 2023-09-27 17:56:26

我正在尝试自动化一个繁琐的过程,该过程目前涉及启动Word,从.dot创建新文档,保存它,运行一个或两个使用VSTO用C#编写的插件,再次保存它,退出文档,然后退出Word。

我想编写一个 C# 命令行应用程序,用户可以使用一个或两个参数启动(传达通常需要与 Word 中的对话框交互的所有信息),然后在运行时离开而无需进一步交互......在 Word 运行时抑制任何和所有焦点窃取(如果必要且可能)。

有没有一些简单的方法来实现这一点?下面是一个类似 Java 的伪代码示例,说明了我的想法:

// magic to non-interactively launch Word and expose it as an object
WordHost word = xx; 
// create new Word document based on a specific template that isn't the default one.
WordDocument doc = MSWord.create("z:'path'to'arbitraryTemplate.dot");
// If we can avoid physically saving it at this point and just assign a concrete
// file path, it would be even better because the network is glacially slow.
doc.saveAs("z:'path'to'newDoc.docx");
// someZeroArgPlugin and aTwoArgPlugin are VSTO plugins written with C#
doc.someZeroArgPlugin(); 
doc.aTwoArgPlugin("first", "second");
// done!
doc.save();
doc=null;
word=null; // something like word.unload() first?
// now do more things that don't involve Word directly...

假设我走在正确的轨道上...

  • 我很确定我可以通过搜索找到我需要知道的大部分内容......一旦我弄清楚我需要搜索什么。我应该搜索什么?

  • 我想在 Visual Studio 中创建哪种类型的项目?.net 4.5 C# 控制台应用程序?Word 2010 加载项?其他类型的项目?

可能会或可能不会产生影响的详细信息:

  • 我的程序只能在安装了 Word 2010 的计算机上运行。不需要与旧版本兼容。

  • 如果它可以在 Vista 下运行,那就太好了,但它只需要在 Win7 下工作。

  • 我有Visual Studio Ultimate 2012

从外部应用程序编写 Word 文档脚本

以下是您需要执行的操作:

  1. 安装Visual Studio和Office。
  2. 使用所选的 .NET 框架创建 C# 控制台项目(建议使用 4.0 或更高版本)。
  3. 添加对 Word COM 库的引用
  4. "项目"菜单 =>"添加引用"、"COM "选项卡Microsoft Word XX.0 对象库 -- Word 2010 为 14.0)。
  5. 将上面添加的引用的"嵌入互操作类型"设置设置为 false
    1. 解决方案资源管理器中展开引用
    2. 选择 Microsoft.Office.Core、Microsoft.Office.Interop.WordVBIDE
    3. 右键单击并选择"属性"以显示引用的"属性"面板。
    4. 在"属性"面板中,将"嵌入互操作类型"设置为 False
  6. 代码离开。

下面是一些示例代码。

using System;
using Microsoft.Office.Interop.Word;
namespace CSharpConsole
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            var application = new ApplicationClass();
            var document = application.Documents.Add();
            document.SaveAs("D:'test.docx");
            application.Quit();
        }
    }
}

有关详细信息,请参阅 http://msdn.microsoft.com/en-us/library/office/ff601860(v=office.14).aspx