如果在绘图画布中,我无法通过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
答案 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