VBA操纵几个ActiveX文本框的(多行)属性?

时间:2013-11-11 23:13:34

标签: vba textbox ms-word activex word-vba

我收到了一个包含许多ActiveX文本框的Word文档,我需要将信息粘贴或输入信息;遗憾的是,每个文本框的Multiline属性都设置为False。

有没有办法在我的文档中的每个文本框上编写宏来操作此属性(如果可以在打开文档时添加奖励)?

据我所知,您可能需要单独操作每个控件?如果是这样,我的文本框都有相似的名称,即TextBox1TextBox2,因此可以遍历它们。

Sub Document_TextBoxes()
    'code to loop through each text box in document and set its multiline property to True?
End Sub

1 个答案:

答案 0 :(得分:0)

借助此SO,您可以对所有ActiveX对象执行此操作:

Sub EnableMultiline()
    On Error Resume Next
    Dim i As Long, oInShp As InlineShape, sTxt As String

    For Each oInShp In ThisDocument.InlineShapes
        i = i + 1
        Err.Clear
        With oInShp.OLEFormat.Object
            sTxt = i & vbTab & .Name
            sTxt = sTxt & " [" & .MultiLine & " -> "
            .MultiLine = True
            sTxt = sTxt & .MultiLine & "]"
            If Err.Number <> 0 Then sTxt = sTxt & " <<-- FAILED"
        End With
        Debug.Print sTxt
    Next
End Sub

您可以在立即窗口中检查输出以查看已更改的内容。使用On Error Resume Next,因为可能存在其他类型的ActiveX对象。毕竟,您的目标只是将所有ActiveX文本框的MultiLine属性设置为True。