在Word中动态更改ActiveX组件名称属性

时间:2016-03-20 23:13:57

标签: vba dynamic ms-word real-time activexobject

我正在尝试在Word文档中开发一个动态用户表单,该表单将创建一个带有通用名称的ActiveX单选按钮,然后重命名该创建的单选按钮,使其具有基于其在表单中的位置的特定数字。 / p>

到目前为止,我相信我拥有编写代码的所有组件,因为我可以创建按钮。我创建按钮,使用VBA导入一个快速部分,其中单选按钮具有已定义的radioButtonX名称,我可以将该单选按钮的名称属性更改为radioButton1。我遇到的问题是我的代码将插入带有通用radioButtonX名称的快速部分,然后无法更改单选按钮名称,因为它表示radioButtonX不存在。但是,我可以在插入radioButtonX后手动运行代码的第二部分,并且我能够成功更改单选按钮名称,从而在两个单独的步骤中为我提供最终结果。

我是去年自学成才的VBA脚本编写者,因此我远非编码专家。到目前为止,我采取的一些策略是:

  • 等待(认为暂停脚本会让脚本有时间识别新的单选按钮)
  • 将代码分成不同的sub,只有一个sub创建单选按钮,然后调用sub来更改名称(希望这会更新VBA)
  • 将代码分成不同的模块,其中一个模块创建单选按钮,然后调用模块更改名称(希望这会更新VBA)

我希望能提供一些建议,策略或示例代码,以便让VBA识别我在代码运行时插入的新单选按钮。我想到的另一个想法是,可能存在一个命令,它会让VBA刷新变量知识,但我在网络搜索中找到类似的东西并没有运气到这一点。

1 个答案:

答案 0 :(得分:0)

我尝试简化我正在处理的代码并提取执行我请求的功能的代码。运行更简单的代码是成功的,并在下面列出。

Private Sub AddRadioButton() 
    Selection.TypeText Text:="TestRadioButton" 
    Selection.Range.InsertAutoText 
    ActiveWindow.View.ShowXMLMarkup = wdToggle 

    ChangeButtonName 
End Sub 

Private Sub ChangeButtonName() 
    ThisDocument.radioButtonX.Name = "radioButton1" 
End Sub 

要使此脚本生效,您必须创建一个名为TestRadioButton的快速部件或单选按钮。我认为现在根本问题必须处理看起来不起作用的时序,因为此代码来自的脚本是使用带有多个通用单选按钮的快速部分,因此执行的脚本无法识别新的单选按钮跑步时。