1

VS 2008でC#を使用して完全にMS Wordドキュメントを作成しています。ページ分割を挿入しようとしています。ページ分割を挿入すると、ページを挿入して下部に新しいページを追加する代わりに、ページ分割と上部にページを追加します。これにより、最初のページが最後のページになります。

ページ分割を挿入するためのコードは次のとおりです。

                start = 0;
                end = 0;
                Word.Range rngDoc = Range(ref start, ref end);
                rngDoc.Collapse(ref CollapseEnd);
                rngDoc.InsertBreak(ref pageBreak);
                rngDoc.Collapse(ref CollapseEnd);

また、これが診断に役立つ場合は、各ページがテーブルによって消費されます

4

4 に答える 4

1

InsertBreak選択後に挿入することはありません。MSDNのコメントに注意してください:

ページまたは列の区切りを挿入すると、選択範囲が区切りに置き換えられます。選択範囲を置き換えたくない場合は、Collapseメソッドを使用する前にメソッドを使用してInsertBreakください。セクションブレークを挿入すると、オブジェクトの直前Selectionにブレークが挿入されます。

(私の強調点です。)ページの最後で休憩をとるには、ドキュメントの最後で(ここにいるように)何も選択する必要はないと思います。

Documentに独自の範囲があるかどうか思い出せません。からすべてを網羅する範囲を取得できますmyDoc.Charactersか?

そうでなければ、私が最初に試みることは

start = int.MaxValue;
end = int.MaxValue;

それがうまくいかない場合は、に頼るかもしれませんComputeStatistics()。このようなもの:

WdStatistic stats = WdStatistic.wdStatisticCharacters;
var chars = myDoc.ComputeStatistics(stats, false);

そして、その値から範囲を作成します。もっと助けられたらいいのに、久しぶりです。幸運を!

于 2010-06-04T21:32:28.420 に答える
1

rngDocの最後に挿入するように設定する必要がありActiveDocument.Rangeます。これを行うC#に簡単に移植できるVBAを次に示します。

Sub InsertNewPageAtEndofDoc()
    Dim rng As Range
    Dim adRange As Range
    Set adRange = ActiveDocument.Range
    Set rng = ActiveDocument.Range(adRange.Start, adRange.End)
    rng.Collapse (wdCollapseEnd)
    rng.InsertBreak (wdPageBreak)
    rng.Collapse (wdCollapseEnd)
End Sub
于 2010-06-04T23:13:59.707 に答える
1

Toddsアプローチを使用しましたが、vb.netでは次のようになります。

Private Sub InsertNewPageAtEndofDoc(app As Word.Application)
        Dim rng As Word.Range
        Dim adRange As Word.Range
        adRange = app.ActiveDocument.Range
        rng = app.ActiveDocument.Range(adRange.Start, adRange.End)
        rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
        rng.InsertBreak(Word.WdBreakType.wdPageBreak)
        rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
End Sub
于 2016-12-13T20:15:30.360 に答える
0

私はこれの専門家ではないので、これは単なる推測です。0から0までの範囲を選択してからそれを折りたたんでいるのに、少し奇妙に見えます。0から0の範囲は、ドキュメントの最初の部分を示すように聞こえます。代わりに、ドキュメントの最後のビットを選択する必要があると思いますが、その方法はわかりません。

于 2010-06-04T21:19:51.817 に答える