0

我想将应用程序作为一个单词加载项,在打开文件时更改文件。

所以我在 Visual Studio 中创建了一个 word 插件项目,这基本上是我拥有的代码:

namespace WordAddIn1
{
    public partial class ThisAddIn
    {
     private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc)
    {
    MessageBox.Show("doc opened");
    // do my stuff
    }

    #region VSTO generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InternalStartup()
    {
        this.Application.DocumentOpen += new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
    }

    #endregion
}
}

问题是,如果您启动一个空的 word 应用程序(双击 word.exe),然后打开一个文档,这很有效,但如果 word 应用程序与文档打开一起启动(双击一个 .doc 文件),则不会。

4

2 回答 2

0

这是执行 Abbey 建议的代码:

private void ThisAddIn_Startup(object sender, System.EventArgs a)
{
  try
  {
    Word.Document doc = this.Application.ActiveDocument;
    if (String.IsNullOrWhiteSpace(doc.Path))
    {
      logger.Debug(String.Format("Word initialized with new document: {0}.", doc.FullName));
      ProcessNewDocument(doc);
    }
    else
    {
      logger.Debug(String.Format("Word initialized with existing document: {0}.", doc.FullName));
      ProcessOpenedDocument(doc);
    }
  }
  catch (COMException e)
  {
    logger.Debug("No document loaded with word.");
  }
}
于 2012-10-31T19:59:53.200 回答
0

如果您通过双击文档打开 Word,则 DocumentOpen 不会触发。

要解决此问题,您可以检查是否在 Word 中打开了文档,如果是,则将文档传递给 Application_DocumentOpen 方法。

顺便说一句 - 您似乎已经更改了 InternalStartup 方法中的代码。正如评论所指出的,您不应该这样做,而是使用 ThisAddIn_Startup。

于 2012-06-21T15:19:41.250 回答