c# - Word Interop Delete 导致参数错误

标签 c# ms-word interop

我很高兴能编写一些在 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/

相关文章:

java - 用于重载和覆盖方法的 Clojure gen-class

c# - 如何向 Azure 移动服务调用添加自己的 header ?

c# - JQuery Flexigrid 问题

C# 比较两个对象值

c# - 使用 C# 读取 Word 2007 表格

vba - 制作非常简单的Word 2010插件-无需Visual Studio的付费版本

c# - 发现 WiFi Direct 服务 - Windows <=> Android

c# - 如何使用c#删除Word文档中的 'Read only recommended'选项?

C#:MS Excel 中复选框的状态

c# - 如何防止 Excel 互操作在插入图像时窃取焦点