thisDocument.Content是否包含我通过编程插入到文档末尾的分页符?

时间:2016-06-02 04:45:49

标签: ms-word ms-office office365 word-vba office-interop

我正在使用C#开发Office2007的文档级程序,我有以下问题: 在构建块库中,有许多我之前已经存储过的自定义表。现在,我想将其中的一些插入到打开的文档中,在将一个特定的构建块(表格内部)插入到文档的末尾之后,我在表格之后插入一个分页符,以便下一个表格从新页面开始,下面是我的代码:

Word.Range rg = theDoc.Content;
rg.Collapse(ref  collapseEnd);//collapse = Word.WdCollapseDirection.wdCollapseEnd;
Word.Range insertedRange = utl.InsertIntoRange(rg, buildBlockName);//The InsertIntoRange method just retrieve the specific buildingblock and insert it into the range using the buildBlock's Insert method
insertedRange.Collapse(ref collapseEnd);
insertedRange.InsertBreak(Word.WdBreakType.wdPageBreak);

上面的代码放在按钮回调中,当我第一次单击按钮时,它按预期工作(插入表格和分页符)。但是,当我单击按钮并再次执行上面的代码时,它只删除我上次插入的分页符。 我不知道为什么,我在网上搜索了很多资料,但没有一个可以解决我的问题,我猜theDoc.Content只是不包括最后一页分解?如果是这样?如何在构建块中插入一些内容到文档中,然后在表后添加分页符? 任何帮助将不胜感激!

在做了一些研究之后,我将问题范围缩小到构建块插入操作。 下面是我的utl.InsertIntoRange(rg,buildBlockName)方法

object categories = "test";
object isRichText = (object)true;
Word.Template tp = doc.Application.Templates[1];
Word.Categories ctgs = tp.BuildingBlockTypes.Item(Word.WdBuildingBlockTypes.wdTypeCustom1). Categories;
object buildBlockNameObj = (object) buildBlockName;

try{
    Word.Category ctg1 =ctgs.Item(ref categories);
    return ctg1.BuildingBlocks.Item(ref buildingBlockNameObj).insert(rg, ref isRichText);

}

如果我插入一个部分普通文本,则不会删除上一个分页符,但是,如果我插入带有上面代码的构建块,则该表将插入到文档的末尾并删除最后一个分页符我刚刚插入! 这个问题只会让我发疯“

1 个答案:

答案 0 :(得分:0)

  
    

thisDocument.Content是否包含我通过编程插入到文档末尾的分页符?

  

是。您可以验证它是否获得内容的字符。然后使用代码插入分页符。最后如果你再次获得这些角色,你会发现比以前更多的两个角色。

以下是每次运行时插入“Hello”和分页符的VBA。这对你有用吗?

Sub InsertText()
Dim rng As Range
Set rng = ActiveDocument.Content
rng.Collapse wdCollapseEnd

rng.InsertAfter "Hello!"
Set rng = ActiveDocument.Content
rng.Collapse wdCollapseEnd
rng.InsertBreak wdPageBreak

End Sub

utl.InsertIntoRange方法的代码是什么?