如何使用 VBA 从 word 内容控件中获取下拉值(不显示文本)
how to get dropdown value (not display text) from word content control using VBA
我的 word 文档中有一个下拉内容控件元素。当我查看该内容控件的属性时,它们定义了 "Display Name" 和 "Value"。我找到了 VBA 显示如何获取显示 text/name 的代码,但我找不到任何显示如何使用 VBA.
获取值信息的代码
我基本上想从中拉出 "value" 字段和其他几个下拉菜单,通过 VBA 填写文本字段。
尝试:
Private Sub Document_ContentControlOnExit(ByVal CCtrl As ContentControl, Cancel As Boolean)
Dim i As Long, StrOut As String
With CCtrl
For i = 1 To .DropdownListEntries.Count
If .DropdownListEntries(i).Text = .Range.Text Then
StrOut = .DropdownListEntries(i).Value
Exit For
End If
Next
End With
MsgBox StrOut
End Sub
这是一个基于 Paul 上面代码的函数。
Function CCValue(ccMyContentControl As ContentControl) As String
' Charles Kenyon 29 September 2020
'
' Function based on Paul Edstein's Code
'
'
If ccMyContentControl.Type <> wdContentControlDropdownList Then
If ccMyContentControl.Type <> wdContentControlComboBox Then
CCValue = ccMyContentControl.range.Text
Exit Function
End If
End If
Dim i As Long
With ccMyContentControl
For i = 1 To .DropdownListEntries.Count
If .DropdownListEntries(i).Text = .range.Text Then _
CCValue = .DropdownListEntries(i).Value
Next i
End With
End Function
当提供内容控件时,它 returns 下拉列表或组合框 CC 的值以及任何其他内容控件上的文本。
我的 word 文档中有一个下拉内容控件元素。当我查看该内容控件的属性时,它们定义了 "Display Name" 和 "Value"。我找到了 VBA 显示如何获取显示 text/name 的代码,但我找不到任何显示如何使用 VBA.
获取值信息的代码我基本上想从中拉出 "value" 字段和其他几个下拉菜单,通过 VBA 填写文本字段。
尝试:
Private Sub Document_ContentControlOnExit(ByVal CCtrl As ContentControl, Cancel As Boolean)
Dim i As Long, StrOut As String
With CCtrl
For i = 1 To .DropdownListEntries.Count
If .DropdownListEntries(i).Text = .Range.Text Then
StrOut = .DropdownListEntries(i).Value
Exit For
End If
Next
End With
MsgBox StrOut
End Sub
这是一个基于 Paul 上面代码的函数。
Function CCValue(ccMyContentControl As ContentControl) As String
' Charles Kenyon 29 September 2020
'
' Function based on Paul Edstein's Code
'
'
If ccMyContentControl.Type <> wdContentControlDropdownList Then
If ccMyContentControl.Type <> wdContentControlComboBox Then
CCValue = ccMyContentControl.range.Text
Exit Function
End If
End If
Dim i As Long
With ccMyContentControl
For i = 1 To .DropdownListEntries.Count
If .DropdownListEntries(i).Text = .range.Text Then _
CCValue = .DropdownListEntries(i).Value
Next i
End With
End Function
当提供内容控件时,它 returns 下拉列表或组合框 CC 的值以及任何其他内容控件上的文本。