Word Interop Удалить результаты в неправильном параметре - PullRequest
2 голосов
/ 10 октября 2011

Я с удовольствием пишу некоторый код, который перемещается в среде Office XP.Я сослался на сборки взаимодействия OfficeXP и написал код для поиска / замены.Это отлично работает.Теперь мне нужно удалить текст вокруг закладки, и я продолжаю получать исключения, *Параметр «Исключение.Глядя на определение в MSDN, я думаю, что я прав.Но, очевидно, я не.Надеюсь, вы, ребята, можете помочь мне здесь.

Обновление : хорошо, понятно.Используя метод Delete для объекта Range, я могу использовать только wdWord в качестве параметра.Я хотел бы изменить свой вопрос сейчас: я хочу удалить две строки, начиная с закладки.Как бы я это сделал?

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Хорошо, я нашел способ сделать то, что должен был сделать.Вот код:

            if (doc.Bookmarks.Exists("Bank1"))
            {
                object bookmarkName = "Bank1";
                object units = WdUnits.wdLine;
                object lines = 2;
                object extend = WdMovementType.wdExtend;
                doc.Bookmarks.get_Item(bookmarkName).Select();

                app.Selection.MoveDown(units, lines, extend);
                app.Selection.Delete();
            }
0 голосов
/ 11 октября 2011

Объекты Range в Word не являются "ориентированными на строки", они не допускают строковые операции, только операции с абзацами. Тем не менее, выборки позволяют линейные операции. Текущий выбор является не свойством слова document, а объектом слова 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  
...