簡體   English   中英

工程圖畫布上的文本框-無法修改文本框文本(Word VBA)

[英]Textbox on a Drawing Canvas - Can't modify Textbox Text (Word VBA)

如果在繪圖畫布中,我很難通過VBA訪問文本框文本。

在其他地方搜索此+顯示我應該能夠使用“ TextFrame.TextRange”訪問文本,但是失敗,並且調試顯示不存在數據(我無法發布圖像,因為我的反饋少於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

這似乎為我工作:

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

我蠻橫地強迫工作。 它僅適用於繪圖畫布中的Word 2010文本框。 它不適用於“繪圖畫布”外部的TextBox。

解決方法=選擇文本框,然后通過“選擇”方法訪問文本框(不是很好的代碼,但是可以)。

MICROSOFT ..為什么您不能更好地文檔!或在發行前完成開發。

我希望這可以幫助其他人

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM