我想要在.net中给一个文档加保护,代码如下:
Microsoft.Office.Interop.Word.Application newApp = new Microsoft.Office.Interop.Word.Application();
object Source = arr[4].ToString();
object Unknown = Type.Missing;
object protecttype = Microsoft.Office.Interop.Word.WdProtectionType.wdAllowOnlyReading;
Microsoft.Office.Interop.Word.Document doc = newApp.Documents.Open(ref Source, ref Unknown,ref Unknown, ref Unknown, ref Unknown,ref Unknown, ref Unknown, ref Unknown,ref Unknown, ref Unknown, ref Unknown,ref Unknown, ref Unknown, ref Unknown,ref Unknown, ref Unknown);
doc.Protect(protecttype);
报错
"Protect”方法没有采用“1”个参数的重载

解决方案 »

  1.   

    很明显的Protect方法不是一个参数...刚看了一下是5个参数...自己好好看看代码...
      

  2.   

    doc.Protect(protecttype); 
    VBA里面可以这么写,C#里面不行。声明:
    C# 
    public virtual void Protect (
    WdProtectionType Type,
    [OptionalAttribute] ref Object NoReset,
    [OptionalAttribute] ref Object Password,
    [OptionalAttribute] ref Object UseIRM,
    [OptionalAttribute] ref Object EnforceStyleLock
    ) 详细请参考:
    http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.protect(VS.80).aspx
      

  3.   

    改成了下面的还是不行
    object Unknown = Type.Missing; 
    doc.Protect(ref protecttype,ref Unknown,"abcd",ref Unknown,ref Unknown);报错
    “Microsoft.Office.Interop.Word._Document.Protect(Microsoft.Office.Interop.Word.WdProtectionType, ref object, ref object, ref object, ref object)”最匹配的重载方法具有一些无效参数
      

  4.   

    那就是说那几个非必须参数不能用Unknown咯。
      

  5.   

    那我用什么?
    空着也不行,unknown也不行.
      

  6.   

    求各位给个最简单的例子吧.
    我只要将一个word文档加上写保护.
      

  7.   


    System.Reflection.Missing.Value
    试试吧。。
      

  8.   

    用 
    System.Reflection.Missing.Value 
    也不行.
      

  9.   

    oDoc.Protect(Word.WdProtectionType.wdAllowOnlyRevisions, ref oMissing, ref password6, ref oMissing, ref oMissing);
    你的密碼不能直接寫字符串,要先定義一個object變量,然後將變量寫入protect函數中