解决嵌套在重复节内容控件

时间:2017-01-23 23:13:12

标签: vba ms-word word-vba

我有下表。

word

每个单元格代表一个单独的纯文本上下文控件。然后将整行包装在重复部分上下文控制(" RSCC")中,该控制被标记为" ENTRY"。如您所知,我可以添加如下行:

Sub MACRO1()
'
' MACRO1 Macro
'

Dim anchor_cc As ContentControl

Set anchor_cc = ActiveDocument.SelectContentControlsByTag("ENTRY").Item(1)

' Add one more row
total = 1
For counter = 1 To total
    With anchor_cc
        .AllowInsertDeleteSection = True
        .RepeatingSectionItems(1).InsertItemAfter
    End With
Next counter

End Sub

我还可以解决这样的 INDIVIDUAL RSCC,它会在对话框中输出 整行 的文本内容:

Sub MACRO2()
Dim anchor_cc As ContentControl

Set anchor_cc = ActiveDocument.SelectContentControlsByTag("ENTRY").Item(1)

With anchor_cc
    For counter = 1 To .RepeatingSectionItems.Count
        MsgBox (.RepeatingSectionItems(counter).Range)
    Next counter
End With

End Sub

如何处理该RSCC中的单个细胞?例如,让我们说我想要解决第一行中的第一个单元格。解决第一行很容易。我可以将.RepeatingSectionItems索引设置为1,即

.RepeatingSectionItems(1)

如何访问该行中的第一个单元格?还是 nth 单元格?请记住,单元格是单独的纯文本上下文控件。我根本不知道这是否会改变答案。

2 个答案:

答案 0 :(得分:0)

我无法使用我认为自带Word 2013或2016的.RepeatingSectionItems属性(此时此刻我在MS Word 2010面前)。

尝试使用此逻辑来引用第一行(您可以使用您的技术),然后在此行中简单地引用所需的单元格:

Dim ccEntry As ContentControl
Set ccEntry = ActiveDocument.SelectContentControlsByTitle("ENTRY")(1)

'to get row...
Dim tblRow As Row
Set tblRow = ccEntry.Range.Tables(1).Rows(ccEntry.Range.Information(wdEndOfRangeRowNumber))

'get first cell
Dim tblCell As Cell
Set tblCell = tblRow.Cells(1)
    Debug.Print tblCell.Range.Text

答案 1 :(得分:0)

如果行中的每个单元格都是ContentControl对象,则使用此代码(例如,对于第一行中的单元格,第二列):

RepeatingSectionItems(1).Range.ContentControls(2).Range.Text