【问题标题】:Changing the value of an ActiveX control field in Word through a VBA macro通过 VBA 宏更改 Word 中 ActiveX 控件字段的值
【发布时间】:2021-01-20 22:17:25
【问题描述】:

我想编写一个 Word VBA 宏,它使用 Excel 文件中包含的数据自动填充 Word 文档中的 ActiveX 控件字段。我设法从 Excel 文件中打开并检索值,但在更改 ActiveX 控件字段的值时遇到了困难。

如何在VBA中访问和修改ActiveX控件字段的值?

“字段”是指文本字段、单选按钮和复选框(例如,选中/取消选中 VBA 宏中的复选框)。

也欢迎提供指向页面的链接,该链接清楚地解释了如何在 VBA 中使用 ActiveX 控件字段,因为到目前为止我还没有找到任何有用的材料(在这一点上)。

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    例如,您可以这样做:

    对于标签

    UserFormName.LabelName.Caption = "Test" '标签的文本将是测试

    对于复选框

    UserFormName.CheckBoxName.Value = True 'CheckBox Checked
    

    对于文本框

    UserFormName.TextBoxName.Value = "Some Text" 'Text in TextBox will be Some Text
    

    单选按钮

    UserFormName.RadioButtonName.Value = True ' Radio Button activated
    

    这是您要求的(不确定我是否了解您的需求,所以请留下反馈,以便我改进此答案)?

    编辑:

    获取名称:

    1. 选择项目
    2. 在属性窗口中读取名称

    例如:

    【讨论】:

    • 感谢您的回答。这正是我所需要的。但是,我在哪里可以找到我的文档的 UserFormName
    • @johnwolf1987 请查看我的编辑,注意您可以根据需要更改名称(只需单击名称并输入您想要的内容)
    • 好的,谢谢。现在可以了!我实际上没有“用户窗体”,因为我直接在 Word 页面上插入了对象。所以我不得不写ThisDocument.TextBox1.Value = "Text"
    • @johnwolf1987 是的,你明白了;)很高兴我能帮助你
    【解决方案2】:

    虽然可以通过ThisDocument 类模块访问文档表面上的 ActiveX 控件,但这仅适用于该文档中的控件

    如果代码应该与其他文档中的控件或从模板创建的文档一起使用,则需要采用不同的方法。

    以下代码示例可以在任何代码模块中。它通过“OLE 接口”访问任何文档中的 ActiveX 控件。

    控件可以是InlineShape(与文本一致)或Shape(文本换行格式)- 只需使用适当的集合即可。 OLEFormat.Object 自行获得控制权。

    Sub WriteToActiveX()
        Dim ils As Word.InlineShape
        Dim olef As Word.OleFormat
        Dim tb As MSForms.TextBox
    
        Set ils = ActiveDocument.InlineShapes(1)
        Set olef = ils.OleFormat
        Set tb = olef.Object
        tb.Text = "Test"
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 2012-02-02
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多