Excel VBA 複数の図形(オートシェイプ)内の文字列を検索する方法

スポンサーリンク

複数の図形内の文字列を検索する方法

やりたい事

同じワークシート内に複数の図形がある場合にすべての図形の文字列を取り出す方法を解説します。
取り出した後にfindやInstrを使用して検索することが可能です。
今回の例では4つのそれぞれ図形のなかに動物の名前が入力してあるので、それをA1~A4に出力します。

サンプルコード

Sub searchShapesText()  
    Dim searchText As String
    Dim shapeText As String
    Dim i As Long
    Dim workShape As Shape
    
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, Range("B2").Left, Range("B2").Top, 100, 100).Name = "いるか"
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, Range("D2").Left, Range("D2").Top, 100, 100).Name = "うさぎ"
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, Range("B10").Left, Range("B10").Top, 100, 100).Name = "ぺんぎん"
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, Range("D10").Left, Range("D10").Top, 100, 100).Name = "シャチ"
    
    ActiveSheet.Shapes("いるか").TextFrame.Characters.text = "いるか"
    ActiveSheet.Shapes("うさぎ").TextFrame.Characters.text = "うさぎ"
    ActiveSheet.Shapes("ぺんぎん").TextFrame.Characters.text = "ぺんぎん"
    ActiveSheet.Shapes("シャチ").TextFrame.Characters.text = "シャチ"
    
    i = 1
    For Each workShape In ActiveSheet.Shapes
        Cells(i, 1) = workShape.TextFrame.Characters.text
        i = i + 1
    Next
End Sub

参考資料

Docs

コメント

タイトルとURLをコピーしました