【问题标题】:Created a Word 2007 Application level word add-in - does not work for new documents创建了 Word 2007 应用程序级 word 加载项 - 不适用于新文档
【发布时间】:2015-02-26 04:43:03
【问题描述】:

我在文章here 之后创建了一个Word 插件。我按 F5 并运行项目,它按预期工作,我认为插件已安装在我的机器中。所以,现在我打开另一个 Word 2007 实例并创建一个文档,但我没有看到该代码在新文档上工作。我错过了什么吗?

以下是我正在使用的代码:-

using Word = Microsoft.Office.Interop.Word;

namespace WordAddIn1
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            this.Application.DocumentBeforeSave +=
   new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(Application_DocumentBeforeSave);
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        void Application_DocumentBeforeSave(Word.Document Doc, ref bool SaveAsUI, ref bool Cancel)
        {
            Doc.Paragraphs[1].Range.InsertParagraphBefore();
            Doc.Paragraphs[1].Range.Text = "Text was added by using code.---";
        }


        #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.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);


        }

        #endregion
    }
}

来自here:- 当您完成项目开发后,请从您的开发计算机中删除插件程序集、注册表项和安全设置。否则,每次在开发计算机上打开 Word 时,加载项都会继续运行。 在开发计算机上清理已完成的项目 在 Visual Studio 的 Build 菜单上,单击 Clean Solution。

现在,当我不清理解决方案时,我应该一直拥有 Word 2007 的加载项,对吗?我根本看不到这种情况发生。

【问题讨论】:

    标签: ms-word vsto add-in


    【解决方案1】:

    根据你做事的方式,有几种可能性。

    很可能是当您打开新实例时,没有附加调试器,因此您的断点没有被命中。

    另外一个可能的原因是它不是一个新的实例,实际上是同一个实例中的一个新文档,并且两个文档之间共享同一个外接程序的同一个实例。在这种情况下,ThisAdd.Loaded 事件将不会再次触发,您必须侦听正在激活的新文档(从记忆词中没有 NewDocument 事件)

    哪种代码不起作用?是效果看不到,还是断点没命中?

    【讨论】:

    • 我没有谈论调试。我创建了插件,它在调试时工作。在我运行完示例之后,插件应该安装在我的机器上,并且可以用于我稍后打开的文档 - 不是吗?这就是我尝试创建应用级插件的原因。
    • 只要您首先创建了应用程序级插件,那么它应该可以正常工作。您的外接程序是做什么的,需要更多信息来尝试了解它吗?
    • 它只是在 this.Application.DocumentBeforeSave 事件的单词中添加了一行。看起来只要我处于调试模式,代码就会按预期执行。但是,当我不调试并尝试打开一个新文档并尝试保存时,该行没有被加载项写入。
    【解决方案2】:

    我发现从 word 2007 中删除该加载项可以解决问题。如果您遇到此问题,请尝试从 Word 2007 中删除加载项并再次构建解决方案,您的更改将生效。出于某种原因,“清洁解决方案”有时不会删除 add-in 这个词(至少有时在我的情况下:-))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多