最初に Word.Selection を使用してみましたが、一度に 1 行ずつコピーして貼り付ける方法がわかりませんでした。Word.Selection を使用して実行できる場合があります。
次に考えたのは、一度にセルをコピーして貼り付けることでしたが、Range プロパティはテーブルのセル構造を保持します。Word モデルを調べて、行の終わりとして区別するために、すべての行の後にある種の終了文字があるかどうかを調べようとしました。そのような文字がありますが、それはすべてのセルです。この文字を見つけるには、office ボタン ([ホーム] の横) をクリックし、単語のオプションをクリックして、[表示] をクリックし、[常にこれらの書式設定マークを画面に表示する] セクションで、[すべての書式設定マークを表示] にチェックマークを付けます。これにより、Word 文書内のすべての印刷不能文字が表示されます。これはあなたが見ることができるシンボルです ¤.
この記号はセルの構造情報を保持し、公開されている ANSI 文字は 13 + 7 です。13 は段落記号で、7 は「セルの終わり」マーカーです。これは、ファイル内のセル構造管理を指す追加情報を保持します。Word 2007 では、これら 2 つの文字は 1 つの文字として表示されるため、セルの範囲からこの文字を削除する必要があります。
マスター テーブルから必要なすべてのセルを保持するリストを作成しました。
List<Microsoft.Office.Interop.Word.Cell> masterTableCells=new List<Microsoft.Office.Interop.Word.Cell>();
その後、次のコードは Range から最後の文字を削除します
Microsoft.Office.Interop.Word.Table table = b.Range.Tables[1];
table.ID = b.Name;
for (int colCounter = 1; colCounter <= masterTable.Columns.Count; colCounter++)
{
Microsoft.Office.Interop.Word.Range sourceRange = masterTable.Cell(1, colCounter).Range;
Microsoft.Office.Interop.Word.Range targetRange = table.Cell(1, colCounter).Range;
object oCharacter = Microsoft.Office.Interop.Word.WdUnits.wdCharacter;
object negOne = -1;
sourceRange.MoveEnd(oCharacter, negOne);
targetRange.MoveEnd(oCharacter, negOne);
targetRange.FormattedText = sourceRange.FormattedText;
}
目的は、フォーマットされたテキストを取得することであり、各セル Range から文字を削除することで、テーブル全体ではなく、その特定のセルの構造のみを指すことができます。
書式設定されたテキスト プロパティのみでループを実行しようとすると、テーブルの破損エラーが発生します。お役に立てれば。