我很高兴能编写一些在 Office XP 环境中移动内容的代码。我已经引用了 OfficeXP 互操作程序集并编写了代码来搜索/替换内容。那很好用。现在我需要删除书签周围的文本,并且不断收到异常抛出。
部分代码如下:
object units = WdUnits.wdLine;
object lines = 2;
object extend = WdMovementType.wdExtend;
object bookmarkName = "Bank1";
var bm = doc.Bookmarks;
var bm1 = doc.Bookmarks.get_Item(bookmarkName);
var ra = bm1.Range;
ra.Delete(ref units, ref lines);
最后一行是我得到“错误参数”异常的地方。查看 MSDN 中的定义,我觉得我是对的。但显然我不是。希望你们能帮帮我。
更新:好的,我明白了。在 Range
对象上使用 Delete
方法我只能使用 wdWord
作为参数。我现在想改变我的问题:我想做的是删除从书签开始的两行。我该怎么做?
最佳答案
Word中的Range对象不是“面向行”的,它们不允许行操作,只能进行段落操作。但是,选择允许行操作。当前选择不是word文档的属性,而是word应用程序对象的属性。下面是一些 VBA 代码,基本上可以完成您尝试的操作,我认为您可以轻松地将其移植到 C#:
Dim rng As Range
Dim doc As Document
Set doc = ActiveDocument
Set rng = doc.Bookmarks("BM").Range
Dim s As Long, e As Long
rng.Select
s = Application.Selection.Start
e = Application.Selection.Next(wdLine, 1).End
Application.Selection.SetRange s, e
Application.Selection.Delete
关于c# - Word Interop Delete 导致参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7715747/