こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBA/シェープの文字列を取得

エクセル2010です。
BOOK内の各シートにボタンやチェックボックス、ラベルやテキストボックスなどが配置されています。
これらの貼り付けられたものの一覧を作りたいのです。

Sub obj_Check()
Dim st
Dim sp
Dim i As Long
For Each st In Sheets
For Each sp In st.Shapes
i = i + 1
With Sheets("Sheet3")
.Cells(i, "A").Value = sp.Name
' .Cells(i, "B").Value = sp.Caption ’これがエラー
.Cells(i, "C").Value = st.Name
End With
Next sp
Next st
End Sub

とやってみましたがsp.Captionがエラーになります。
.Cells(i, "B").Value = sp.Shapes.Range.Character.Text
としても同じです。
どうやったら、シェープに書かれた文字列が取得できるのでしょうか?

投稿日時 - 2014-09-01 18:49:06

QNo.8738634

困ってます

質問者が選んだベストアンサー

http://blog.ch3cooh.jp/entry/20081124/1244599969

こちらが参考になりませんでしょうか。

投稿日時 - 2014-09-01 19:54:29

お礼

ありがとうございます。
.TextFrame.Characters.Textとするのですね。
TextFrameが存在しないShapeもあるのでエラー回避をいれて以下でうまくいきました。


Sub obj_Check()
Dim st
Dim sp
Dim i As Long
For Each st In Sheets
For Each sp In st.Shapes
i = i + 1
With Sheets("Sheet3")
.Cells(i, "A").Value = sp.Name
On Error Resume Next
.Cells(i, "B").Value = sp.TextFrame.Characters.Text
On Error GoTo 0
.Cells(i, "C").Value = st.Name
End With
Next sp
Next st
MsgBox i & "個のChec終了"
End Sub

投稿日時 - 2014-09-01 21:19:17

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問