MS Word分页插入错误的地方

时间:2010-06-04 21:03:44

标签: c# ms-word insert page-break

我在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 个答案:

答案 0 :(得分:1)

选择后

InsertBreak永远不会插入。请注意MSDN remarks

  

插入页面或列分隔符时,选择将被中断替换。如果您不想替换选择,请在使用Collapse方法之前使用InsertBreak方法。插入分节符时,会立即在前面 Selection对象中插入中断。

(我的重点。)为了在页面末尾休息一下,我认为你必须在文件的最后选择任何东西(就像你在这里一样)。

我不记得Document是否有自己的范围。你能从myDoc.Characters得到一个无所不包的范围吗?

如果没有,我会尝试的第一件事是

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

如果这不起作用,您可以使用ComputeStatistics()。像这样:

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

然后从该值创建范围。希望我能提供更多帮助,但对我来说已经有一段时间了。祝你好运!

答案 1 :(得分: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

答案 2 :(得分: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

答案 3 :(得分:0)

我不是这方面的专家所以这只是一个猜测,虽然你选择的范围从0到0然后折叠它看起来有点奇怪。从0到0的范围听起来像它会给你文档的开头,我猜你需要选择文档的最后一位而不知道如何做到这一点。