首页 > 解决方案 > 如何在 VBA for Microsoft word 中使用非 activeX 内容控制器

问题描述

我正在尝试找到一种在 Microsoft Word 中使用非 ActiveX 内容控制器并为它们创建 VBA 宏的方法。例如组合框。我一生都无法弄清楚如何在我的 VBA 脚本中调用它们,因为每次我收到运行时错误 424。我已经在其属性中命名了组合框,但它似乎没有相同的影响这适用于 ActiveX 组合框。我一定错过了一些非常容易的东西。非常感谢任何帮助。我在下面放置了示例代码;

Private Sub Document_open()  'Auto Run Macros Upon Opening of this specific doc


Call ComboBox1Additems
Call ComboBox2Additems
Call ComboBox3Additems
Call ComboBox4Additems
Call ComboBox5Additems
Call ComboBox6Additems
Call ComboBox7Additems
Call ComboBox12_Change


End Sub

 Private Sub ComboBox1_Change() 'Running through possible ComboBox Values and Updating the Corrosoponding Text Box



If ComboBox1.Value = "TMS backup" Then
    TextBox1.Value = "The TMS installation directory, settings directory and the database was backed up before the update was performed"

    ElseIf ComboBox1.Value = "TMS installation" Then
    TextBox1.Value = "Installation of version 1.17.X.19XXX performed"

    ElseIf ComboBox1.Value = "TMS update" Then
    TextBox1.Value = "Update from version 1.16.X.XXXXX to version 1.17.X.19XXX performed"

    ElseIf ComboBox1.Value = "Tool presetter update" Then
    TextBox1.Value = "Update from version 1.16.X.XXXXX to version 1.17.X.19XXX performed"

    ElseIf ComboBox1.Value = "Database generated" Then
    TextBox1.Value = "Database structure created with version 1.17.0"

    ElseIf ComboBox1.Value = "article characteristic bar update" Then
    TextBox1.Value = "Update of DIN 4000 and (CAM) structure to version 2.2.0 (DIN) and X.X.X (CAM)"

    ElseIf ComboBox1.Value = "CAM-Interface installation" Then
    TextBox1.Value = "Installation of the version X.X.X and configuration of the (CAM) interface"

    ElseIf ComboBox1.Value = "CAM-Interface update" Then
    TextBox1.Value = "Updated the (CAM) interface to version X.X.X"

    ElseIf ComboBox1.Value = "WebService installation" Then
    TextBox1.Value = "Installation of version 1.1.116.2 and configuration of WebService performed"

    ElseIf ComboBox1.Value = "WebService update" Then
    TextBox1.Value = "Update of WebService to version 1.1.116.2 performed"

    ElseIf ComboBox1.Value = "CodeMeter initialized" Then
    TextBox1.Value = "Set up CodeMeter on the license server and the client machines"

    ElseIf ComboBox1.Value = "" Then
    TextBox1.Value = "Please make a drop down selection or manually fill out if not applicable"

    Else

    TextBox1.Value = "Please make a drop down selection or manually fill out if not applicable"


End If

End Sub

Sub ComboBox1Additems() 'Adding Items to ActiveX Control Combo Boxes
ComboBox1.Clear
ComboBox1.AddItem "TMS backup"
ComboBox1.AddItem "TMS installation"
ComboBox1.AddItem "TMS update"
ComboBox1.AddItem "Tool presetter update"
ComboBox1.AddItem "Database generated"
ComboBox1.AddItem "article characteristic bar update"
ComboBox1.AddItem "CAM-Interface installation"
ComboBox1.AddItem "CAM-Interface update"
ComboBox1.AddItem "WebService installation"
ComboBox1.AddItem "WebService update"
ComboBox1.AddItem "CodeMeter initialized"

End Sub


Sub ComboBox12_Change()
 ComboBox12.AddItem "Turkey"
 ComboBox12.AddItem "Chicken"
 ComboBox12.AddItem "Duck"
 ComboBox12.AddItem "Goose"
 ComboBox12.AddItem "Grouse"
End Sub

ComboBox#Additems() 在调用时运行良好,它们指向 activeX 组合框。Combobox12_change() 给出错误运行时错误“424”,运行时需要对象。这是“指向”非activeX 组合框。

标签: vbams-word

解决方案


这些控件被命名为ContentControls

Private Sub CommandButton1_Click()
Dim ccs As ContentControls,cc as ContentControl
Set ccs= Me.ActiveWindow.Document.ContentControls
For Each cc In ccs
  If cc.Title = "myTitle" Then
    MsgBox cc.DropdownListEntries(1)
  End If
Next
End Sub

在 Document_open 事件中,这些控件可能尚未准备好。


推荐阅读