Как элементы управления содержимым индексируются в повторяющемся разделе «Управление содержимым»? - PullRequest
0 голосов
/ 19 октября 2018

У меня есть документ с двумя параграфами: в первом один обычный текст CC и во втором повторяющемся разделе CC с одним простым текстом CC внутри.

Я пытаюсь переместить всю информацию из CC вповторяющийся раздел должен появиться в первом абзаце CC.До сих пор я пришел к этому коду:

 Sub first_paragraph()

    Dim x As Integer
    Dim xNames As String
    Dim xEntry As String

    xNames = ""

    With ActiveDocument.SelectContentControlsByTag("VP_pav")

        For x = 1 To .Count
            With .Item(x)
                If .Tag = "VP_pav" Then
                    xEntry = ActiveDocument.SelectContentControlsByTag("VP_pav").Item(x).Range.Text
                        ' "if" for removing comma before first entry
                         If xNames = "" Then
                            xNames = xEntry + xNames
                            Else
                            xNames = xEntry + ", " + xNames
                            End If
                    End If
                End With
            Next x
        End With

    ActiveDocument.SelectContentControlsByTag("pirm_pas").Item(1).Range.Text = xNames

End Sub

Проблема в том, что CC, сгенерированный в повторяющемся разделе CC (затем добавление нового раздела), кажется, получает случайный номер элемента (я думал, что первый CC с тегом "example" будетполучить элемент № 1, второй CC с тем же тегом, получить элемент № 2 и т. д., но, похоже, это не так).

Поскольку вновь сгенерированный CC получает случайные номера элементов, значения в первом абзаце CCне в порядке.

Можно ли создать вновь сгенерированный CC для получения последовательных номеров?Как они получают номера предметов, если они не последовательные?Должен ли быть другой подход?

Я добавляю картинку, чтобы проиллюстрировать мою ситуацию:

enter image description here

PS Я удалюмой недавно опубликованный вопрос о правильном порядке переменных в этой ситуации, так как я решил, что это (вероятно) не проблема.

1 Ответ

0 голосов
/ 19 октября 2018

С помощью показанного кода Word ничего не говорит Word о том, что он читает элементы управления содержимым в любом порядке.В этом случае лучшим подходом было бы зацикливание элементов управления контентом в элементе управления контентом Repeaing Section.

В следующем примере предполагается, что RepSec был назначен для Title элемента управления содержимым повторяющейся секции:

 Sub first_paragraph()
    Dim xNames As String, xEntry as String
    Dim ccRepSec as Word.ContentControl
    Dim cc as Word.ContentControl

    xNames = ""

    Set ccRepSec = ActiveDocument.SelectContentControlsByTitle("RepSec").Item(1)    
    For Each cc in ccRepSec.Range.ContentControls
         If .Tag = "VP_pav" Then
              xEntry = cc.Range.Text
              If xNames = "" Then
                 xNames = xEntry & xNames
              Else
                 xNames = xEntry & ", " & xNames
              End If
         End If
    Next cc

    ActiveDocument.SelectContentControlsByTag("pirm_pas").Item(1).Range.Text = xNames    
End Sub
...