2016-12-14 4 views
0

文書からテーブルを削除するために文書を繰り返し処理するVBAコードがあります。次のコードは、VBAで正常に動作します:新しいRange.Find方法があるのでMicrosoft Word文書を繰り返してテーブルを検索して置き換えます

Set wrdDoc = ThisDocument 
With wrdDoc 
    For Each tbl In wrdDoc.Tables 
     tbl.Select 
     Selection.Delete 
    Next tbl 
End With 

残念ながら、私は簡単に、おそらく、C#にこのコードを変換することはできません。私が試した3つの事柄は、それぞれ失敗しています。 (再書き込みVBAコードの)

初の試み:

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. 
... 

誰かが助けてくださいでした:私もこれを試してみました

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. 
} 

foreach (var item in doc.Tables) 
{ 
    item.Delete; //NOPE! No "Delete" function. 
} 

私はこれを試してみました私は、C#とWord Interop(Word 2013と2016)を使用して、ドキュメントを繰り返し処理し、テーブルを検索し、次にそれを選択する、削除する、または置き換えるなどの機能を形成しますか?

ありがとうございます!

答えて

0

この回答を理解するにはしばらく時間がかかりました。すべてのコードサンプルをオンラインにして、アプリケーションを作成する必要はありませんでした。後世のために、ここで私はどのように問題を解決したのですか。

  1. あなたはこのように、Usingステートメントを持っていることを確認してください:MSWordの= Microsoft.Office.Interop.Wordを使用して

  2. ドキュメントを開いて、新しいmsWordリファレンス、範囲、およびテーブルを操作します。私は、以下の基本的な例を提供します。

     //open the document. 
         doc = app.Documents.Open(sourceFolderAndFile, ReadOnly: true, ConfirmConversions: false); 
    
         //iterate through the tables and delete them. 
         foreach (MsWord.Table table in doc.Tables) 
         { 
          //select the area where the table is located and delete it. 
          MsWord.Range rng = table.Range; 
          rng.SetRange(table.Range.End, table.Range.End); 
          table.Delete(); 
         } 
    
         //don't forget doc.close and app.quit to clean up memory. 
    

あなたは

+0

テキストのような、画像など、他の項目でテーブルを置き換えるためにレンジ(RNG)を使用することができますおそらく、あなたは後方使用する必要がありますループ?これは、コレクションからアイテムを削除するときに通常行うことです。なぜあなたはSetRangeを使用していますか? – Jbjstam

+0

私が知る限り、すべてのテーブルが最初から最後まで見つかるので、逆ループを実行する必要はありません。 SetRangeに関しては、それは(私が言うことができる限り)テーブルを選択し、それを削除する最良の方法です。より良い選択肢があれば、私はすべての耳です:) – Bill

関連する問題