绘图画布上的文本框 - 无法修改文本框文本(Word VBA)

时间:2015-07-28 15:28:18

标签: vba canvas textbox drawing textrange

如果在绘图画布中,我无法通过VBA访问文本框文本。

在其他地方搜索此+显示我应该能够使用" TextFrame.TextRange"来访问该文本,但它失败了,并且调试显示没有数据存在(我无法将图像发布为i& #39; m< 10反馈)

请试一试:   - 制作一个新的word文档,   - 添加绘图画布并在文本框中放入一些虚拟文本   - 尝试通过VBA访问/修改它 非常感谢=)

For Each shp In ActiveDocument.Shapes
    If shp.Type = msoCanvas Then

        For Each canvasitem In shp.CanvasItems
            If canvasitem.Type = msoTextBox Then

                ' NONE OF THESE WORK - WHAT AM I MISSING?
                'Debug.Print canvasitem.TextFrame.TextRange.Text
                'Debug.Print canvasitem.TextFrame.TextRange.Characters.Text

                'If canvasitem.TextFrame2.HasText = True Then _
                 '   Debug.Print canvasitem.TextFrame2.TextRange

            End If
        Next

    End If
Next

2 个答案:

答案 0 :(得分:0)

This seems to work for me:

For Each shp In ActiveDocument.Shapes
    If shp.Type = msoCanvas Then

        For Each canvasitem In shp.CanvasItems
            If canvasitem.Type = msoTextBox Then
                Debug.Print canvasitem.TextFrame.TextRange.Text
            End If
        Next
    End If
Next

答案 1 :(得分:0)

我粗暴地迫使一个工作。 它仅适用于绘图画布中的Word 2010 TextBox。 它不适用于绘图画布外的TextBox。

解决方法=选择文本框,然后通过“选择”方法访问文本框(不是很好的代码,但它可以工作)。

MICROSOFT ..为什么“你的文件更好!或者在发布之前完成开发.Grrr。

我希望这有助于其他人

For Each shp In ActiveDocument.Shapes
  If shp.Type = msoCanvas Then

  For Each canvasitem In shp.CanvasItems
     If canvasitem.Type = msoTextBox Then
        ' Word 2003
        ' Debug.Print canvasitem.TextFrame.TextRange.Text

        ' Word 2010 - change the field in a Textbox (in a drawing canvas)
        canvasitem.Select
        For Each fld In Selection.Fields
           If InStr(fld.Code.Text, "STYLEREF 3 \s") _
           Or InStr(fld.Code.Text, "STYLEREF 3") Then _
               fld.Code.Text = "STYLEREF ""Heading 3"" "
        Next

     End If
   Next
   End If
Next