我尝试自动编辑表单,但我遇到了书签的问题。我执行表单的方式是填写一个,保存它,重做所有字段并再次保存。这节省了时间,打开和关闭了大量不同的文件,这意味着我不必每次都遍历书签和表单域。
然而,当书签使用wordApp.Selection.TypeText()将文本插入其中时,书签将被销毁或丢失。无论如何我都无法掌握它。目前,我已经获得了范围并在将文本放入旧文本后在该位置放置了一个新书签。
不幸的是,当我尝试替换它时,这会留下前面的文本,因为我没有覆盖旧书签中的文本。如:
Form 0:
Name: John Smith
Form 1:
Name: Jane DoeJohn Smith
我一直试图选择之前的文字并将其删除,但我被两个类似的错误所阻止,"无法编辑范围"和"范围无法删除"。我尝试过这样做:
//Exception - CANNOT EDIT RANGE
Range range = doc.Bookmarks[fieldName].Range.Duplicate;
doc.Range(range.Start, range.End).Delete();
我也试过了range.text = ""
,但我得到了相同的结果,或者"范围无法删除"。
它有点乱,但是我尝试了许多不同的范围变体试图获取文本,但它总是归结为它不会让我改变我输入的文本。
我看了类似的问题:
The range cannot be deleted. at Microsoft.Office.Interop.Word.Range.set_Text(String prop)
但迄今为止的答案仍无法解决我的问题。
答案 0 :(得分:0)
使用提供给这个问题的编辑,我能够按照我想要的方式工作:
How can I keep bookmarks as bookmarks after editing the text value?
if (doc.Bookmarks.Exists(fieldName))
{
doc.FormFields[fieldName].Result = text;
}