excel - 将表格、书签和页面插入 Word 文档的中间
问题描述
以下来自@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
推荐阅读
- postgresql - Postgresql 枚举比较不适用于一种特定类型
- jquery - 如何在下拉列表中仅处于活动状态时更改特定项目的颜色
- python - Python:如何为表示函数的实例变量编写单元测试?
- audiounit - AVAudioEnvironmentNode 在后台模式下更改其渲染算法时崩溃
- javascript - 如何在没有召回服务的情况下将相同的数据使用到另一个页面?
- python - 如何使用 tkinter 每十秒将数据收集到同一个 CSV 文件中
- php - 要求在文件夹中找到所有块(而不是将它们全部写出来)
- macos - Running Docker containers slows down new Macbook Pro to a crawl
- reactjs - 如何以正确的方式在 reactjs 中使用 datatables.net?
- html - 如何使几个div处于同一位置动态