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 回答