我在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);
此外,每个页面都由表使用,如果这有助于诊断
答案 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的范围听起来像它会给你文档的开头,我猜你需要选择文档的最后一位而不知道如何做到这一点。