У меня есть код VBA, который выполняет итерацию через документ для удаления таблиц из документа. Следующий код работает отлично в VBA:Итерации через документ Microsoft Word для поиска и замены таблиц
Set wrdDoc = ThisDocument
With wrdDoc
For Each tbl In wrdDoc.Tables
tbl.Select
Selection.Delete
Next tbl
End With
К сожалению, я не могу легко перевести этот код на C#, предположительно потому, что существует новый метод Range.Find. Вот три вещи, которые я пробовал, каждая неудача.
Первая попытка (переписана кода VBA):
foreach (var item in doc.Tables)
{
item.Delete; //NOPE! No "Delete" function.
}
Я попытался это:
doc = app.Documents.Open(sourceFolderAndFile); //sourceFolderAndFile opens a standard word document.
var rng = doc.Tables;
foreach(var item in rng)
{
item.Delete; //NOPE! No "Delete" function.
}
Я также попытался это:
doc = app.Documents.Open(sourceFolderAndFile); //sourceFolderAndFile opens a standard word document.
var rng = doc.Tables;
Range.Find.Execute(... //NOPE! No Range.Find available for the table collection.
...
Может кто-то пожалуйста, помогите я понимаю, как я могу использовать C# и Word Interop (Word 2013 и 2016) для итерации по документу, поиска таблицы, а затем за формировать функцию, например, выбирать ее, удалять или заменять?
Спасибо!
Может быть, вы должны использовать в обратном направлении для цикл? Это то, что вы обычно делаете, когда хотите удалить элементы из коллекции. Почему вы используете SetRange? – Jbjstam
Насколько я могу судить, нет необходимости делать обратный цикл, поскольку все таблицы находятся от начала до конца. Что касается SetRange, это лучший способ (насколько я могу судить) выбрать таблицу, а затем удалить ее. Если у вас есть лучший вариант, я все уши :) – Bill