Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在段落或范围级别以编程方式保护word文档只读_C#_Ms Word_Interop - Fatal编程技术网

C#在段落或范围级别以编程方式保护word文档只读

C#在段落或范围级别以编程方式保护word文档只读,c#,ms-word,interop,C#,Ms Word,Interop,我的工具将处理1000多个文档。我们在文档级别设置了只读,这导致了严重的性能问题。 _appObject=新的Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document\u DocObj; 字符串文件=@“c:\Users\Public\Public Documents\Word12.docx” _DocObj=_appObject.Documents.Open(ref文件,ref缺失,r

我的工具将处理1000多个文档。我们在文档级别设置了只读,这导致了严重的性能问题。
_appObject=新的Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document\u DocObj; 字符串文件=@“c:\Users\Public\Public Documents\Word12.docx”
_DocObj=_appObject.Documents.Open(ref文件,ref缺失,ref缺失,ref缺失,
参考缺失,参考缺失,参考缺失,参考缺失,参考缺失,参考缺失,参考缺失,参考
缺失、参考缺失、参考缺失、参考缺失、参考缺失、参考缺失); //保护
appObject.ActiveDocument.Protect(Microsoft.Office.Interop.Word.WdProtectionType .wdallownly Reading、ref noReset、ref password、ref useIRM、ref enforceStyleLock)

但我想将段落或范围设置为只读

foreach (Microsoft.Office.Interop.Word.Paragraph aPar in 
                    _appObject.ActiveDocument.Paragraphs)
{
Microsoft.Office.Interop.Word.Range parRng = aPar.Range;
string sText = parRng.Text;
// I want to make readonly  here
}
然后该文档将被保存

 _DocObj.SaveAs(FileName: TargetDir, FileFormat: WdSaveFormat.wdFormatDocumentDefault);
            object saveChanges = WdSaveOptions.wdSaveChanges;
            object originalFormat = WdOriginalFormat.wdOriginalDocumentFormat;
            object routeDocument = true;
            islockStatus = true;
 var doc_close = (Microsoft.Office.Interop.Word._Document)_DocObj;
 doc_close.Close(ref saveChanges, ref originalFormat, ref routeDocument);

因此,要求是制作word文档的一部分(特别是标题、段落或alteast范围)

如果您有
范围
对象,则可以使用
编辑器
成员访问允许编辑该范围的用户列表

在您的情况下,您可能希望启用“everyone”编辑整个文档,然后删除编辑特定段落的权限

在VBA中,这看起来像这样(我相信您可以将其转换为C#):

' Allow access to the entire doc
ActiveDocument.Content.Editors.Add wdEditorEveryone

' Remove access to paragraph 1
ActiveDocument.Content.Paragraphs(1).Editors(wdEditorEveryone).Delete