2

いくつかのテーブルを含む 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);

前もって感謝します :)

4

0 に答える 0