![](/img/trans.png)
[英]MS Word VBA, trying to populate a combobox with data from an http call
[英]How to populate a ComboBox from a Legacy dropdown result in VBA (Word)
我有一個包含舊版DropDownList ( FormField )的Word表單 (不是用戶表單 )。
我可以使用為它們設置的書簽來訪問它們。 (例如:對於帶有書簽“ bookmark”的書簽)
ActiveDocument.FormFields("bookmark")
我使用Legacy下拉列表而不是ActiveX ComboBox,因為我需要使用彼此的Result來更改其他Legacy下拉列表的值,依此類推。
例如 :
If ActiveDocument.FormFields("bookmark").Result <> "whatever" Then
Select Case ActiveDocument.FormFields("bookmark").Result
Case "Test"
With ActiveDocument.FormFields("bookmark2").DropDown.ListEntries
.Clear
.Add "Whatever string I want"
.Add "Another string I need"
End With
'Let's not put them all but there is more cases than one
End Select
End If
換句話說,下一個的內容取決於前一個的內容。
話雖如此,我現在需要對這些Dropdowns的最后一個進行一些選擇。 問題是,我無法根據已閱讀的內容對“ 舊版下拉菜單”進行多選。 根據我的閱讀,仍然可以使用ActiveX ComboBox 。
問題是,我進行“依賴”下拉菜單的方式是,當用戶選擇一個值時,調用模塊執行上述代碼。 不幸的是,我不能在這些模塊中使用ActiveX ComboBox ,只能在ThisDocument中使用 。 如果可以的話,我只需要更改
ActiveDocument.FormFields("bookmark2").DropDown.ListEntries
對於
Me.ComboBoxWhatever
使用AddItem而不是Add,然后從那里查找如何進行多重選擇。 但是我不能。
根據我已經嘗試/閱讀的內容,在用戶從“ 舊版下拉菜單”中選擇一個值之后,無法從ThisDocument調用Sub方法(此處將使用ComboBox執行我需要的代碼)。
當用戶從“ 舊式下拉菜單”中選擇一個值時,如何檢查結果並使用適當的值填充ActiveX ComboBox ,以便用戶可以從ComboBox中選擇多個選項?
編輯:辛迪·梅斯特(Cindy Meister)的回答對任何ActiveX控件(例如ListBox等)都很好。
您可以通過包含它的InlineShape或Shape對象訪問ThisDocument
外部的ActiveX控件。 Word通過將非Word內容“包裝”在圖形對象中來管理它們。
這里有一些示例代碼,演示了如何使用“常規”模塊中的過程將項目添加到組合框列表的末尾。 請注意,它如何使用OLEFormat.Object
來“進入” ActiveX控件的屬性和方法。
Sub AddItemToExistingCombo()
Dim doc As word.Document
Dim obj1 As String, oIndex As Long
Dim of As word.OLEFormat
Dim cb As ComboBox
Set doc = ActiveDocument
Set of = ActiveDocument.InlineShapes(1).OLEFormat
'Set of = ActiveDocument.Bookmarks("combobox").Range.InlineShapes(1).OLEFormat
Set cb = of.Object
If Not cb Is Nothing Then
oIndex = cb.ListCount
obj1 = "item" & oIndex + 1
cb.AddItem obj1, oIndex
End If
End Sub
當然,使用InlineShape的索引值不是理想的,您可能需要選擇它並添加書簽。 為此,進入“設計模式”,選擇控件並插入書簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.