如果该行出现在 table 之前的页面上,则将 table 之前的行与 table 一起移动
Move the line before the table along with the table if the line appears on the page preceding the table
我们的 Word 文档中有 table 的标题,它们的行为不像标题,而是“正常”文字样式。这些标题有时会出现在 table.
的前一页
有数百个文档,这些文档中可能有上百万个标题实例。这些文档是使用脚本从旧源系统导入到新源系统的,但没有按预期完成工作。
如果前一页存在此类标题,我希望将它们从页面中删除并显示在同一页面的 table 之前。
我想使用的逻辑:
- 找一个table
- 查找table
的页码
- 在 table
之前找到第一个“普通”段落样式实例
- 查找“普通”段落样式的页码
- 仅当“普通”段落样式的第一个实例的页码比 table 的页码少 1 时,才将整个实例移至下一页 table
- 对所有 table 执行此操作。
到目前为止我只能写出这段代码:
Dim tblNew As Table
Dim oPara As Paragraph
Dim oRng As Range
Dim PageNo As Integer
Dim PageNoCap As Integer
For Each tblNew In ActiveDocument.Tables
PageNo = tblNew.Range.Information(wdActiveEndPageNumber)
我会通过修复样式的不正确使用来解决这个问题。下面的代码应用Caption样式来演示原理。
首先使用代码来弥补未正确使用 Word 是一个坏主意,但如果您有需要更正的现有文档,这可能是一个有用的临时措施。
Sub ApplyStyleToTableCaptions()
Dim tbl As Table
Dim oRng As Range
With ActiveDocument.Styles(wdStyleCaption).ParagraphFormat
If Not .KeepWithNext Then .KeepWithNext = True
End With
For Each tbl In ActiveDocument.Tables
Set oRng = tbl.Range
oRng.Collapse wdCollapseStart
oRng.Move wdParagraph, -1
oRng.Paragraphs(1).Range.Style = wdStyleCaption
Next tbl
End Sub
我们的 Word 文档中有 table 的标题,它们的行为不像标题,而是“正常”文字样式。这些标题有时会出现在 table.
的前一页有数百个文档,这些文档中可能有上百万个标题实例。这些文档是使用脚本从旧源系统导入到新源系统的,但没有按预期完成工作。
如果前一页存在此类标题,我希望将它们从页面中删除并显示在同一页面的 table 之前。
我想使用的逻辑:
- 找一个table
- 查找table 的页码
- 在 table 之前找到第一个“普通”段落样式实例
- 查找“普通”段落样式的页码
- 仅当“普通”段落样式的第一个实例的页码比 table 的页码少 1 时,才将整个实例移至下一页 table
- 对所有 table 执行此操作。
到目前为止我只能写出这段代码:
Dim tblNew As Table
Dim oPara As Paragraph
Dim oRng As Range
Dim PageNo As Integer
Dim PageNoCap As Integer
For Each tblNew In ActiveDocument.Tables
PageNo = tblNew.Range.Information(wdActiveEndPageNumber)
我会通过修复样式的不正确使用来解决这个问题。下面的代码应用Caption样式来演示原理。
首先使用代码来弥补未正确使用 Word 是一个坏主意,但如果您有需要更正的现有文档,这可能是一个有用的临时措施。
Sub ApplyStyleToTableCaptions()
Dim tbl As Table
Dim oRng As Range
With ActiveDocument.Styles(wdStyleCaption).ParagraphFormat
If Not .KeepWithNext Then .KeepWithNext = True
End With
For Each tbl In ActiveDocument.Tables
Set oRng = tbl.Range
oRng.Collapse wdCollapseStart
oRng.Move wdParagraph, -1
oRng.Paragraphs(1).Range.Style = wdStyleCaption
Next tbl
End Sub