我收到了一个包含许多ActiveX文本框的Word文档,我需要将信息粘贴或输入信息;遗憾的是,每个文本框的Multiline属性都设置为False。
有没有办法在我的文档中的每个文本框上编写宏来操作此属性(如果可以在打开文档时添加奖励)?
据我所知,您可能需要单独操作每个控件?如果是这样,我的文本框都有相似的名称,即TextBox1
,TextBox2
,因此可以遍历它们。
Sub Document_TextBoxes()
'code to loop through each text box in document and set its multiline property to True?
End Sub
答案 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。