0

情報を貼り付けたり入力したりする必要がある多くの 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
4

1 に答える 1

0

With the help of this SO, you can do it to all ActiveX objects:

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

You can check the output in the Immediate window to see which have been changed. Used On Error Resume Next as there may be other type of ActiveX objects. After all, your goal was just to set the MultiLine property to True for all ActiveX text boxes.

于 2013-11-12T00:34:43.450 に答える