我想将一个应用程序作为一个单词加载项,在文件打开时更改它们。
所以我在visual Studio中创建了一个单词加载项,这基本上就是我的代码:
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.exe),然后打开一个文档,但是如果单词应用程序与文档开头一起启动(双击.doc文件) )。
答案 0 :(得分:0)
如果通过双击文档打开Word,则不会触发DocumentOpen。
要解决此问题,您可以检查文档是否在Word中打开,如果是,则将文档传递给Application_DocumentOpen方法。
BTW - 您似乎更改了InternalStartup方法中的代码。如评论所示,您不应该这样做,而是使用ThisAddIn_Startup。
答案 1 :(得分: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.");
}
}