如何从 Word 2016 中的重复部分内容控制表单字段填充列表?

如何从 Word 2016 中的重复部分内容控制表单字段填充列表?

因此,我有一个重复部分内容控件 (RSCC),其中包含两个文本内容控件。一个是用于项目名称的纯文本内容控件,另一个是用于项目描述的富文本内容控件。

这是在 RSCC 中,因为在某些情况下,需要写多个项目。我希望能够在文档的后面引用每个潜在的项目名称。我该怎么做?

理想情况下,用户输入一个名称(如“小部件 1”),然后在文档的后面,会出现一段类似“项目 – 小部件 1 – 等等等等……”的内容。但是,如果用户输入“小部件 1”作为项目名称,然后使用 RSCC 命名并描述“小部件 2”,则上面的段落现在会显示“项目 – 小部件 1、小部件 2 – 等等等等……”等等。这可能吗?如果可以,我该怎么做?

答案1

我对此一无所知——在看到您的问题之前,我从未听说过 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 列的值的逗号分隔列表,并将其显示在消息框中。如果您的数据不在表中,我不知道该告诉您什么。如果您的数据在表中,但它不是文档中的第一个,我不知道如何找到正确的数据。而且,最重要的是,我不知道如何获取列表进入您的文档。正如我所说,这充其量只是您解决方案的一部分。

我从MSDN 的“如何从重复部分内容控件中的内容控件获取值”。(那里还有更多代码,您可能会觉得有用。)请注意,他们的代码确实如此。我尝试从长度中减去 2,结果丢失了文本的最后一个字符;我不知道为什么会不同。我还注意到他们的代码确实将 数据写入表中。也许您可以以此为线索,弄清楚如何将例程的结果放入您的文档中。Mid(text, 1, Len(text) - 2)c.Cells(columnNumber).Range.Text = someText

相关内容