范围无法删除。 在Microsoft.Office.Interop.Word.Range.set_Text(String prop)
用文本替换书签的推荐c#.net代码看起来非常直接,我在很多网站上看到了相同的代码(包括你的,从2009年9月发布的post)然而,我无法通过错误
范围无法删除。 在Microsoft.Office.Interop.Word.Range.set_Text(String prop)
(我在Windows 7和Word 2010 14.0中使用VS 2010)。
我的代码:
private void ReplaceBookmarkText(Microsoft.Office.Interop.Word.Document doc, string bookmarkName, string text) { try { if (doc.Bookmarks.Exists(bookmarkName)) { Object name = bookmarkName; // throws error 'the range cannot be deleted' doc.Bookmarks.get_Item(ref name).Range.Text = text; } }
不要直接改变范围,尝试以下方法:
Bookmark bookmark = doc.Bookmarks.get_Item(ref name); //Select the text. bookmark.Select(); //Overwrite the selection. wordApp.Selection.TypeText(text);
例如,使用Word应用程序实例来改变文档。
if (doc.Bookmarks.Exists(name)) { Word.Bookmark bm = doc.Bookmarks[name]; bm.Range.Text = text }
这有效但请记住,如果以这种方式替换现有书签的整个文本,书签就会消失。 无论何时替换现有书签的第一个字符(即使将其替换为已存在的书签),书签也会被使用。 我发现的作品(虽然我不认为这是微软认可的方法)是这样的:
上述就是C#学习教程:范围无法删除。 在Microsoft.Office.Interop.Word.Range.set_Text(String prop)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
if (doc.Bookmarks.Exists(name)) { Word.Bookmark bm = doc.Bookmarks[name]; Word.Range range = bm.Range.Duplicate; bm.Range.Text = text; // Bookmark is deleted, range is collapsed range.End = range.Start + text.Length; // Reset range bounds doc.Bookmarks.Add(name, range); // Replace bookmark }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/997736.html