使用VBA在MS Word文档中添加页面会添加额外的页面

时间:2014-02-21 05:36:13

标签: ms-word word-vba

我有MS word文件,宏在第一页有表。 (表格是使用标签创建的。)

但是当表格中的单元格不足时,我想添加另一个页面,其中包含类似的表格。

所以我尝试编码如下

  

ActiveDocument.Sections(1).Range.Copy

     

ActiveDocument.Sections.Add.Range.Paste

但是这段代码有时会改变第一页的格式。 并创建第三个空白页面,第二页面包含第一个内容。

任何正文都可以让我知道如何只添加第一页内容相同的页面, 第一页没有变化。

由于

1 个答案:

答案 0 :(得分:1)

该表将自动流入下一页,您也可以指定重复的标题行。

但假设你需要一张新桌子......

您的原始问题需要一些说明(请参阅下面的几点),但请查看以下代码是否会破坏您的格式:

Sub copytable1()
Dim rtarget As Word.Range
With ActiveDocument
  Set rtarget = .Range(.Content.End - 1, .Content.End - 1)
  rtarget.InsertBreak Type:=Word.WdBreakType.wdPageBreak
  Set rtarget = .Range(.Content.End - 1, .Content.End - 1)
  rtarget.FormattedText = .Tables(1).Range.FormattedText
  Set rtarget = Nothing
End With
End Sub

它假设

  • 您要复制的表是文档中的第一个表
  • 您只想在文档末尾插入一个新页面,然后插入表格的副本。如果您的文档已经是多页的,那么您需要使用明显不同的代码。

创建可编辑的Word文档时,作为一种“好习惯”,您可以使用带有“Page Break Before”属性设置的段落样式来实现中断,而不是像我一样使用硬分页符。

可替换地,

Sub copytable3()
Dim rtarget As Word.Range
With ActiveDocument
  Set rtarget = .Range
  rtarget.Collapse wdCollapseEnd
  rtarget.InsertParagraphAfter
  Set rtarget = .Range
  rtarget.Collapse wdCollapseEnd
  rtarget.ParagraphFormat.PageBreakBefore = True
  Set rtarget = .Range
  rtarget.Collapse wdCollapseEnd
  rtarget.InsertParagraphAfter
  Set rtarget = .Range
  rtarget.Collapse wdCollapseEnd
  rtarget.ParagraphFormat.PageBreakBefore = False
  Set rtarget = .Range
  rtarget.Collapse wdCollapseEnd
  rtarget.Select
  rtarget.FormattedText = .Tables(1).Range.FormattedText
  Set rtarget = Nothing
End With
End Sub