-1

Итак, у меня есть повторяющийся элемент управления контентом (RSCC) с двумя элементами управления текстовым содержимым. Одним из них является элемент управления содержимым в виде простого текста для имени элемента, а другим - элемент управления содержимым в формате расширенного текста для описания элемента.

Это в RSCC, потому что в некоторых случаях нужно будет написать несколько элементов. Я хотел бы иметь возможность ссылаться на каждое из этих потенциальных названий элементов позже в документе. Как мне это сделать?

В идеале пользователь нажимает на имя (например, "виджет 1"), а затем в документе есть параграф, в котором говорится что-то вроде «элемент (ы)- виджет 1 - бла-бла-бла-бла ...». Однако, если пользователь вводит "виджет 1" для имени элемента, а затем использует RSCC для именования и описания "виджета 2", в вышеприведенном абзаце теперь говорится «элемент (ы)- виджет 1, виджет 2 - бла-бла» бла ... "и так далее. Это возможно? Если да, то как мне это сделать?

1 ответ1

0

Я в этом не разбираюсь - я даже не слышал о RSCC, пока не увидел ваш вопрос, - но я собрал воедино то, что может быть частью вашего решения.  Я предполагаю, что ваши данные находятся в таблице, а поле «имя» - это столбец 1.  Введите этот код VBA:

Sub listControl_1()
    Dim o As Table
    Dim c As Row
    Dim mylist As Variant

    Set o = ActiveDocument.ContentControls.Item(1).Range.Tables(1)
    rownum = 0
    For Each c In o.Rows
        rownum = rownum + 1
        If rownum > 1 Then
            thislen = Len(c.Cells(1).Range.Text)
            If thislen > 0 Then
                thislen = thislen - 1
            End If
            If rownum = 2 Then
                mylist = Mid(c.Cells(1).Range.Text, 1, thislen)
            Else
                mylist = mylist & ", " & Mid(c.Cells(1).Range.Text, 1, thislen)
            End If
        End If
    Next c
    MsgBox mylist
End Sub

Тест If rownum > 1 Then предполагает, что в вашей таблице есть строка заголовка (и пропускает ее, чтобы вы не получили текст заголовка в списке).  Если у вас нет строки заголовка (или если у вас их несколько), измените код соответствующим образом.  Кажется, что каждая ячейка имеет символ разделителя в конце; код использует Mid() чтобы убрать это.

Это собирает разделенный запятыми список значений для столбца 1 первой таблицы и отображает его в окне сообщения.  Если ваших данных нет в таблице, я не знаю, что вам сказать.  Если ваши данные находятся в таблице, но они не первые в документе, я не знаю, как найти правильную.  И, самое главное, я не знаю, как включить список в ваш документ.  Как я уже сказал, это в лучшем случае часть вашего решения.

Я скопировал структуру кода VBA из MSDN «Как получить значение из управления контентом в разделе« Контентное управление повторяющегося раздела »».  (Там есть больше кода, который вы могли бы найти полезным.)  Обратите внимание, что их код делает Mid(text, 1, Len(text) - 2) .  Я попытался вычесть 2 из длины, и я потерял последний символ текста; Я не знаю, почему это не так.  Также я замечаю, что их код делает c.Cells(columnNumber).Range.Text = someText для записи данных в таблицу.  Возможно, вы можете использовать это в качестве подсказки, чтобы выяснить, как получить результат от рутины в ваш документ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .