如何使用 Word VBA 宏在列标题下方添加一行并向下移动现有行?

Posted

技术标签:

【中文标题】如何使用 Word VBA 宏在列标题下方添加一行并向下移动现有行?【英文标题】:How to add a row below the column header and move the existing row downwards using Word VBA Macros? 【发布时间】:2020-11-09 06:27:32 【问题描述】:

每当我更新文档时,我都需要在表格顶部添加一行,就在标题下方,然后将旧行移动到下一个级别。该表格通常出现在 Word 文档的最后一页。请在附件中找到预期和实际行为的屏幕截图。 下面是我为实现而编写的代码:

    转到最后一页并找到表格 添加一行(在列标题上方添加)

期望:

    在列标题之后立即添加行并将现有行移至下一级 将日期添加到第二列。 Click for the screenshot

我的代码:

子宏1()

Selection.EndKey Unit:=wdStory
Dim theTable As Table
Dim theNewRow As Row
For Each theTable In ActiveDocument.Tables
    Set theNewRow = theTable.Rows.Add(theTable.Rows.First)
    'Other row formatting
Next theTable

结束子

我正在学习 VBA,任何帮助都会非常有用。感谢您的宝贵时间。

screenshot2

【问题讨论】:

【参考方案1】:

正如 Intellisense 向您显示的那样,Table.Rows.Add 的输入参数是 [BeforeRow]。这是一个可选参数,因此如果省略它,则在表格的最后一行之后添加新行。

由于您希望该行位于第一行之后和第二行之前,您需要将第二行作为参数传递,例如

With ActiveDocument.Tables(ActiveDocument.Tables.Count)
   With .Rows.Add(.Rows(2))
      'add date
      .Cells(2).Range.Text = Format(Date, "MMMM d, yyyy")
      'add any additional row formatting
   End With
End With

【讨论】:

这就是我想要的。它工作:) 非常感谢 :)【参考方案2】:

例如:

With ActiveDocument
  With .Tables(.Tables.Count)
    .Split (2)
    With .Range.Characters.Last.Next
      .FormattedText = .Next.Rows(1).Range.FormattedText
    End With
    .Rows(2).Range.Delete
  End With
End With

不过,不清楚您所说的“将现有行移至下一级”是什么意思。

【讨论】:

嗯,在截图中,你可以看到已经有一行了。现在我需要在它上面添加一个新行。 确实需要提供前后截图。你的描述和单独的截图一清二楚。 我添加了另一个屏幕截图。我希望现在很清楚 你试过我贴的代码了吗?我在标题 之后添加了新行。您的“事后”镜头似乎显示了您使用代码得到的错误结果,而不是预期的结果......【参考方案3】:

它需要下一步

Sub test()
    Selection.EndKey Unit:=wdStory
    Dim theTable As Table
    Dim theNewRow As Row
    For Each theTable In ActiveDocument.Tables
        Set theNewRow = theTable.Rows.Add(theTable.Rows.First.Next) '<~~ add next
    
        'Other row formatting
    Next theTable
End Sub

【讨论】:

不过,使用选择是不必要且低效的。此外,如果要修改的唯一表格是最后一个是文档,则循环是不合适的,正如 OP 的“表格通常出现在 Word 文档的最后一页”所建议的那样。 即使这样也有效。我有 3 个解决方案。谢谢,伙计们!

以上是关于如何使用 Word VBA 宏在列标题下方添加一行并向下移动现有行?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Excel VBA 宏在 Word 中查找和替换页脚文本

使用 VBA 宏在 excel 行中搜索字符串的完全匹配

如何使用 VBA 宏在 Excel 表中查找条件累积和

VBA:如何找到同一行中的下一个单元格(不包括隐藏单元格)

Word VBA如何将标题仅应用于表格单元格中的第一行

在EXCEL中用VBA操作WORD表格:怎样选择一个表格中除第一行以外的任意连续行(比如第2到4行)?