前提・実現したいこと
VBAマクロにおいて
エクセルファイルにおける、図形内の文字列検索メソッドを作成しています。
このコード自体はネットから拾ってきたものにはなります。
どこをどのように修正すべきかご教授願います。
発生している問題・エラーメッセージ
text = parentShape.DrawingObject.Characters.textにおいて、 実行時エラー '438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。 とでる。
該当のソースコード
VBA
1Option Explicit 2 3Sub SearchInAutoShape() 4 ' 入力ファイル 5 Dim inputfile As String 6 inputfile = "C:\work\sample.xlsx" 7 8 ' 検索キーワード 9 Dim keyword As String 10 keyword = "修正" 11 12 ' ファイルオープン 13 Application.ScreenUpdating = False 14 Dim inputBook As Workbook 15 Set inputBook = Workbooks.Open(inputfile, ReadOnly:=True) 16 17 ' シート数分繰り返し 18 Dim i As Long 19 For i = 1 To inputBook.Worksheets.Count 20 21 ' シートに貼り付けられているオートシェイプ分繰り返す 22 Dim parentShape As Shape 23 For Each parentShape In inputBook.Worksheets(i).Shapes 24 Dim text As String 25 26 ' オートシェイプがグループ化されている場合、 27 ' グループ化されているオートシェイプのテキストをチェック 28 If parentShape.Type = msoGroup Then 29 Dim groupedShape As Shape 30 For Each groupedShape In parentShape.GroupItems 31 text = groupedShape.TextFrame.Characters.text 32 If InStr(text, keyword) > 0 Then 33 Debug.Print ("sheet : " + inputBook.Worksheets(i).Name) 34 Debug.Print ("text : " + text) 35 End If 36 Next groupedShape 37 38 ' オートシェイプがグループ化されていない場合 39 ' そのオートシェイプのテキストをチェック 40 Else 41 text = parentShape.DrawingObject.Characters.text 42 If InStr(text, keyword) > 0 Then 43 Debug.Print ("sheet : " + inputBook.Worksheets(i).Name) 44 Debug.Print ("text : " + text) 45 End If 46 End If 47 Next parentShape 48 Next i 49 50 ' ファイルクローズ 51 inputBook.Close SaveChanges:=True 52 Set inputBook = Nothing 53 Application.ScreenUpdating = True 54 55End Sub 56
試したこと
デバックをし、1行ずつ実行はしてみても、同様のエラーが出てしまい、進むことが出来ません。
また、エラー内容を検索しても、誤字脱字等が原因、と検索結果で出てきて
一通り確認はしたのですが誤字脱字は見つかりませんでした。
補足情報(FW/ツールのバージョンなど)
VBAツールを学び始めたものです。
基礎知識は学び、まずはトレースから初めて実行しております。
お手数をおかけしますがお願いいたします。
EXCEL2010,2016 の両環境で実施しました。
※キーワードとパスについては実際の私の環境で適したものを
指定して実行しています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。