我需要在Word中创建只读合并字段。
我已经尝试过使用Locked属性,可以在下面看到。此属性的描述说明 - 当一个字段被锁定时你无法更新字段结果这听起来非常适合我问题,但这似乎没有工作
以下是我用于将合并字段添加到MS Word的代码:
using Word = Microsoft.Office.Interop.Word;
Word.Range currentRange = Globals.ThisAddIn.Application.Selection.Range;
Word.MailMerge merge = Globals.ThisAddIn.Application.ActiveDocument.MailMerge;
merge.Fields.Add(currentRange, selectedNode.LocalName).Locked = true;
一旦我运行上面的代码并在Word中创建字段,我仍然可以右键单击它并选择“编辑字段”,我可以在其中重命名字段或执行其他更改,而不会从Word中收到任何错误或预防
如果有人之前实施过此类内容,请分享您的知识。
以下是对这些技术的一些见解:
答案 0 :(得分:2)
感谢您的回复,但是我只需要将合并字段设为只读,文档的其余部分应保持原样。
我的一位同事找到了一个很好的方法来实现我想要的东西,只是分享它以防其他人可能需要这个功能:
您需要做的就是创建一个ContentControl对象并将合并字段添加到内容控件中。 将LockContents属性设置为true。此属性用于确定是否允许用户编辑内容控件的内容。
using Word = Microsoft.Office.Interop.Word;
object missing = System.Type.Missing;
Word.Selection PosRange = Globals.ThisAddIn.Application.Selection;
Microsoft.Office.Interop.Word.ContentControl cntCtrl;
cntCtrl = PosRange.Range.ContentControls.Add(Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText, ref missing);
object fldType = Microsoft.Office.Interop.Word.WdFieldType.wdFieldMergeField;
object fldText = "Employee";
Microsoft.Office.Interop.Word.Field fld = cntCtrl.Range.Fields.Add(cntCtrl.Range, ref fldType, ref fldText);
cntCtrl.LockContents = true;
在下图中,合并字段托管在内容控件中,注意用户现在无法编辑字段
答案 1 :(得分:0)
使用Locked属性只会阻止字段的值更改,我假设这不是你想要的。
我知道阻止字段代码更改的唯一方法是保护文档。字段本身应该仍然是可更新的。