繁体   English   中英

将表格、书签和页面插入 Word 文档的中间

[英]Insert table, bookmarks, and pages into middle of Word document

以下来自@macropod(底部)的非常有用的代码可以很好地将在 Excel 中生成的表格/书签/分页符插入 Word 文档的末尾( 如何将表格和书签插入 Word,每页一个)。 我正在尝试修改代码以插入原始 2 页文档的中间,其中一页上有一个表格,第 2 页上有第二个表格,中间有几个空段落和分页符。 结果应该是每个新的书签/表格组合都被迭代地插入到原始两个表格之间的新页面中。

Dim wdApp As New Word.Document, wdDoc As Word.Document, wdRng As Word.Range, wdTbl As Word.Table
Dim d As Long, StrBkMk As String, datMin As Date, datMax As Date
datMin = "04/01/2020": datMax = "04/05/2020"

Set wdDoc = wdApp.Documents.Open("myFile")
With wdDoc
  For d = datMin To datMax
    StrBkMk = "D" & d
    Set wdRng = .Characters.Last
    With wdRng
      .Collapse wdCollapseStart
      .Text = CDate(d) 'Place Text in bookmark
      .Bookmarks.Add StrBkMk, .Duplicate
      .Collapse wdCollapseEnd
      .InsertBefore vbCr
      Set wdTbl = .Tables.Add(.Duplicate, 6, 5)  'Add table
      wdTbl.Range.Characters.Last.Next.InsertBefore Chr(12) 'Add pagebreak
    End With
  Next d
  .Characters.Last.Previous.Text = vbNullString
End With

我尝试替换:

    Set wdRng = .Characters.Last

   Set wdRng = .Characters.First
   Set wdRng = wdRng.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=(d - datMin + 2)) 

其中 (d - datMin + 2) 是页码,但这不起作用。 它将第一个表格/书签/页面放在正确的位置,但随后将后续表格/书签/分页符放在文档的末尾,并且它们相互重叠。 任何想法我做错了什么以及如何解决这个问题?

令人尴尬的是,事实证明修复很容易。

而不是如上

Set wdRng = .Characters.Last

它就像替换为一样简单:

Set wdRng = .Paragraphs(2).Range

或者更好的是,在您要添加内容(表格、书签、分页符等)的位置插入分节符(插入->分节符->分节符类型)。 在文档中间,然后使用:

Set wdRng = .Sections(2).Range
. . . 
. . . 

并确保插入的顺序是正确的(不是相反的顺序),需要进行以下更改:

    Set Rng = .Sections((d - datMin) + 1).Range 'Go to next section each loop
    . . . 
    . . . 

    wdTbl.Range.Characters.Last.Next.InsertBreak wdSectionBreakNextPage  'To add pagebreak . . . instead of .InsertBefore Chr(12) as in original code


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM