Sono fuori dalla mia profondità su questo - non ho mai nemmeno sentito parlare di RSCC prima di aver visto la tua domanda - ma ho messo insieme qualcosa che potrebbe essere parte della tua soluzione. Presumo che i tuoi dati siano in una tabella e che il tuo campo "nome" sia la colonna 1. Inserisci questo codice 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
Il If rownum > 1 Then
test presuppone che la tabella abbia una riga di intestazione (e la salta, quindi non si ottiene il testo dell'intestazione nell'elenco). Se non hai una riga di intestazione (o se ne hai più di una), modifica il codice di conseguenza. Ogni cella sembra avere un carattere delimitatore alla fine; il codice usa Mid()
per toglierlo.
Ciò assembla un elenco separato da virgole dei valori per la colonna 1 della prima tabella e lo visualizza in una finestra di messaggio. Se i tuoi dati non sono in una tabella, non so cosa dirti. Se i tuoi dati sono in una tabella, ma non è il primo nel documento, non so come trovare quello giusto. E, soprattutto, non so come ottenere l'elenco nel tuo documento. Come ho già detto, questa è al massimo una parte della tua soluzione.
Ho copiato il framework del codice VBA da MSDN "Come ottenere un valore dal controllo del contenuto all'interno del controllo del contenuto della sezione Ripetizione" . (C'è più codice lì, che potresti trovare utile.) Nota che il loro codice lo fa . Ho provato a sottrarre 2 dalla lunghezza e ho perso l'ultimo carattere del testo; Non so perché sia diverso. Inoltre noto che il loro codice fa
per scrivere i dati nella tabella. Forse puoi usarlo come indizio per capire come ottenere il risultato dalla routine nel tuo documento.Mid(text, 1, Len(text) - 2)
c.Cells(columnNumber).Range.Text = someText