なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

VBAで図形(shape)の情報を取得する

f:id:nazuna_0124:20190920212856p:plain

元気がないのですっかり更新停滞気味。

おつかれさまです。なずなです。

今日友達に何となく聞かれたので早速試してみることに。


聞かれたのは

カテゴリごとに分かれてる図形の情報を取得できる?というもの。



回答は縦に位置が揃ってるとか配置が固定されてればいけるよ!



結果はこちら。


f:id:nazuna_0124:20190920212146p:plain



コードはこれ


Sub sample()
    Dim shp As Shape
    Dim dic As New Scripting.Dictionary
    
    dic.Add 2, "大カテゴリ"
    dic.Add 4, "中カテゴリ"
    dic.Add 6, "小カテゴリ"
    
    
    
    For Each shp In Worksheets(1).Shapes
        Debug.Print shp.Name & ":" & dic(shp.TopLeftCell.Column) & ":" & shp.TextEffect.Text
    Next
    
End Sub


出力結果です。

f:id:nazuna_0124:20190920212301p:plain


結局はオブジェクトのプロパティの暗記というかんじです。


図形はShapes


ShapeにはTopLeftCellという所属(?)しているセルの情報がある。


この辺知ってれば(ぐぐれば)あとは思いつくのではないかと。


中のテキストの取得がプロパティ的に深いので、参考にのせておきました。



工夫すれば特定の図形だけ削除したり、隠れてる図形見つけたりと

たまーに使う機会がありまーす。