いくつかのテーブルを含む Word ドキュメントを印刷する WPF アプリケーションを作成しましたが、機能しますが、個別のテーブルではなくネストされたテーブルが表示されます。
私は別の投稿を見ていましたが、それらはすべてうまく機能しませんでした。
また、Wordでマクロを記録しようとしたところ、
Selection.MoveDown Unit:=wdLine, Count:=1
そして私はこれを次のように変えました:
wordApplication.Selection.MoveDown(WdUnits.wdLine, 1);
あるいは:
wordApplication.Selection.MoveDown(WdUnits.wdLine, 11);
これは私の元のコードの始まりです:
using System.Drawing;
using System.Reflection;
using NetOffice;
using Word = NetOffice.WordApi;
using NetOffice.WordApi.Enums;
using System.Globalization;
using System.Windows;
...
Word.Application wordApplication ...
Word.Document newDocument = wordApplication.Documents.Add();
これは最初のテーブルです:
Word.Table table = newDocument.Tables.Add(wordApplication.Selection.Range, 6, 2);
// insert some text into the cells
table.Cell(1, 1).Select();
wordApplication.Selection.TypeText("...");
...
これは 2 番目のテーブルですが、テキストは最初のテーブル (最後のセル) の最後のセルに入ります。
Word.Table tableSchool = newDocument.Tables.Add(wordApplication.Selection.Range, 4, 2, WdDefaultTableBehavior.wdWord9TableBehavior);
tableSchool.Cell(1, 1).Select();
wordApplication.Selection.TypeText("...");
...
更新しました。6月17日午後9時
カーソルをテーブルの外側に置くものを見つけましたが、それはファイルの先頭にあります。これはすべきではありません:
wordApplication.Selection.GoToNext(WdGoToItem.wdGoToSection);
wordApplication.Selection.TypeText("GoToNext");
更新しました。6月17日午後9時30分
このステートメントを置く場所によっては、「InsertAfter」を使用しても機能しますが、それでも問題は解決しません。
wordApplication.Selection.Range.InsertAfter("test2");
Word.Table table = newDocument.Tables.Add(wordApplication.Selection.Range, 4, 2, WdDefaultTableBehavior.wdWord9TableBehavior);
これは、私が見つけた2つのことを組み合わせて、「wordApplication.Selection.Range」をある種の「InsertAfter」に調整する必要があります。
更新 18.06 07:30 午前
これを使用すると、「ComException」が発生します(マクロレコーダーがこれを示しました):
wordApplication.Selection.MoveRight(WdUnits.wdCharacter, 1);
wordApplication.Selection.TypeParagraph();
18.06 07:45 午前更新
それから私はこれを見つけました、これは私の目的にかなり近いです(しかし、前のテーブルの最後のセルを置き換えます):
wordApplication.Selection.EndKey(WdUnits.wdStory, WdMovementType.wdExtend);
wordApplication.ActiveWindow.Selection.PasteAndFormat(WdRecoveryType.wdPasteDefault);
前もって感謝します :)