J'ai un code VBA qui parcourt un document pour supprimer des tables d'un document. Le code suivant fonctionne très bien en VBA:Parcourir un document Microsoft Word pour rechercher et remplacer des tables
Set wrdDoc = ThisDocument
With wrdDoc
For Each tbl In wrdDoc.Tables
tbl.Select
Selection.Delete
Next tbl
End With
Malheureusement, je ne peux pas traduis facilement ce code C#, sans doute parce qu'il ya une méthode Range.Find plus récente. Voici trois choses que j'ai essayées, chacune échouant.
Première tentative (re-écriture du code VBA):
foreach (var item in doc.Tables)
{
item.Delete; //NOPE! No "Delete" function.
}
J'ai essayé ceci:
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.
}
J'ai aussi essayé ceci:
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.
...
Quelqu'un pourrait-il s'il vous plaît aider je comprends comment je peux utiliser C# et Word Interop (Word 2013 et 2016) pour parcourir un document, trouver une table, puis former une fonction, comme la sélectionner, la supprimer ou la remplacer?
Merci!
Peut-être que vous devriez utiliser un arrière pour boucle? C'est ce que vous faites normalement lorsque vous voulez supprimer des éléments d'une collection. Pourquoi utilisez-vous SetRange? – Jbjstam
Pour autant que je sache, il n'est pas nécessaire de faire une boucle arrière puisque toutes les tables sont trouvées du début à la fin. En ce qui concerne le SetRange, c'est la meilleure façon (pour autant que je sache) de sélectionner la table puis de la supprimer. Si vous avez une meilleure option, je suis tout ouïe :) – Bill