gpt4 book ai didi

vba - 如何在 Word 表格中复制一行?

转载 作者:行者123 更新时间:2023-12-04 18:44:21 24 4
gpt4 key购买 nike

我正在尝试使用 VBA 在 Word 中复制表格行,不使用选择对象或剪贴板 .也就是说,我想要一个与现有行具有相同内容的新行。

为此,我首先创建一个新(空)行,并循环遍历源行中的每个单元格并将其内容复制到目标行中的相应单元格中。

要复制每个单元格,我得到一个 Range引用源单元格全部内容的对象,以及等效的 Range对于目标单元格,然后执行以下操作:

oToRange.FormattedText = oFromRange.FormattedText

这在 Office 2003 上运行良好,大部分时间也适用于 Office 2010。但是,我在一个特定场景中遇到了真正的问题。我已经(极大地)简化了该场景以演示问题的核心。

在下图中,外部(灰色)2R x 1C 表中有两个单元格。第二行是要复制的行。第一行是我创建的新行,我想将第二行的内容复制到其中。

enter image description here

您会注意到第二行包含一个嵌套表。

当我在 Word 2003 中运行下面的代码时,它运行良好,并得到以下结果:

enter image description here

但是,在 Word 2010 中,相同的代码会产生以下结果:

enter image description here

如您所见,单元格内容已插入到目标表格单元格之前(和外部)。

值得一提的是,如果我在嵌套表之后放了一些东西,让它不再是源单元格中的最后一个东西,那么就不会出现这个问题。

这是我正在使用的完整 VBA 代码:
Dim oDoc As Word.Document
Set oDoc = ThisDocument

Dim oFromRange As Range
Set oFromRange = ThisDocument.Tables(1).Cell(2, 1).Range
oFromRange.End = oFromRange.End - 1

Dim oToRange As Range
Set oToRange = ThisDocument.Tables(1).Cell(1, 1).Range
oToRange.End = oToRange.End - 1

oToRange.FormattedText = oFromRange.FormattedText

注意:调整到源和目标范围的末尾是必要的,因为 Cell.Range包括单元格结束标记,我不想复制它。

我该怎么做才能说服它把内容放在目标单元格内(就像 Word 2003 那样),而不是放在它之前?

最佳答案

希望我已经正确理解了您的查询......这不是您想要做的吗?此代码将复制表的第 1 行并在其下方创建该行的副本。

Sub Sample()
Dim tbl As Table

Set tbl = ActiveDocument.Tables(1)

tbl.Rows(1).Range.Copy
tbl.Rows(1).Select
Selection.InsertRowsBelow
tbl.Rows(2).Range.Paste
End Sub

截图

enter image description here

跟进 (来自评论)

此代码不使用 Selection目的
Sub Sample()
Dim tbl As Table
Dim rowNew As Row

Set tbl = ActiveDocument.Tables(1)
Set rowNew = tbl.Rows.Add(BeforeRow:=tbl.Rows(1))
tbl.Rows(2).Range.Copy
tbl.Rows(1).Range.Paste
End Sub

更多跟进 (来自评论)
Sub Sample()
Dim tbl As Table
Dim rowNew As Row

Set tbl = ActiveDocument.Tables(1)
Set rowNew = tbl.Rows.Add(BeforeRow:=tbl.Rows(1))
tbl.Rows(1).Range.FormattedText = tbl.Rows(2).Range.FormattedText
'~~~> This is required as the above code inserts a blank row in between
tbl.Rows(2).Delete
End Sub

关于vba - 如何在 Word 表格中复制一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com