vba - 如何在 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 组合框。
解决方案
这些控件被命名为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 事件中,这些控件可能尚未准备好。
推荐阅读
- c - MPI 程序在完成打印输出后崩溃
- batch-file - 10多个参数的批处理文件选择命令
- vue.js - 如何在 2 个 v-for 循环中使用 $index 值创建变量?
- javascript - 使用 Rails 6 和 Bootstrap 4 在 FullCalendar 中使用模态创建新事件
- postgresql - PostreSQL 分区表在大型数据集上运行速度快吗?
- python - 我不断收到错误“没有名为 tkinter 的模块”基于 GUI 的加权/平均成绩计算器程序
- swift - SwiftUI 已发布更新不刷新
- xcode - 使用 Apple 的 Create ML 算法
- r - 在R中对数据框进行子集化后保留变量“名称”和“variable.labels”属性?
- python - 整数的基本加法不会在 Sublime Text 3 中打印?