使用Late-Binding自动化Word会抛出MissingMemberException

时间:2010-12-01 05:43:08

标签: c# automation office-interop

我正在尝试使用以下代码从正在运行的Microsoft Word应用程序访问某些信息..

object appClass = Marshal.GetActiveObject("Word.Application");
object documents = appClass.GetType().GetProperty("Documents");
object count = documents.GetType().InvokeMember("Count", BindingFlags.GetProperty, null, documents, null);

当我运行此代码时,它告诉我找不到Count并且抛出了MissingMemberException。

谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

您没有获得对Documents对象的引用,GetProperty返回PropertyInfo。修正:

        object appClass = Marshal.GetActiveObject("Word.Application");
        object documents = appClass.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, appClass, null);
        object count = documents.GetType().InvokeMember("Count", BindingFlags.GetProperty, null, documents, null);

添加对Microsoft.Office.Word.Interop的引用可以减少对 lot 的痛苦。