2017-01-23 15 views
0

У меня есть следующая таблица.Адресация управления отдельным контентом вложенная в управление содержимым повторяющегося раздела

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 

Я также могу обратиться к ИНДИВИДУАЛЬНЫЙ ГПКС, как это, который будет выводить текстовое содержимое весь ряд в DialogBox:

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 cell? Помните, что ячейки являются отдельными элементами управления текстовым контекстом. Я не знаю, изменит ли это ответ вообще.

ответ

0

Я не могу использовать .RepeatingSectionItems свойство, которое, я считаю, поставляется с Word 2013 или 2016 (на данный момент я перед MS Word 2010).

Попробуйте с этой логикой для обозначения первой строки (где вы могли бы использовать techinque) и рядом см требуемой ячейки в этой строке довольно просто:

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