おまじないの綴り方

spelling of a logical spell

excel vbaで画像の位置を取得する

目標

アクティブシート内の図形/画像の中心位置を座標(ピクセル単位)で取得する

やり方

状況

以下のようにシート内に図形や図が幾つか設置されており、その中心座標を取得することを考えます

f:id:miyatsuki_yatsuki:20170702160430p:plain

コード

中心座標を直接取得することはできないので、左(上)の座標+幅(高さ)/2することで中心座標を取得します

Sub TopAndLeftSamp1()
    Dim Sh As Shape
    
    For Each Sh In ActiveSheet.Shapes  '---アクティブシート全ての図形に対し
      Debug.Print Sh.Name & ":" & (Sh.Left + Sh.Width / 2) & "," & (Sh.Top + Sh.Height / 2)
    Next Sh
    
End Sub

結果

Rectangle 1:118.125,87
Rectangle 2:346.125,226.5
Rectangle 3:204.375,243.75
Rectangle 4:437.625,96.75
Rectangle 5:475.875,374.25
Picture 7:597.3749,225.3749

結果は 図形名(英語) : x座標, y座標 の形式で出力されています。

図の正方形/長方形1は正方形/長方形2より右下にありますが、x, yともにRectangle2のほうがRectangle1より大きい値を示しているので問題なく取得できていそうです。

参考

Excel VBA を学ぶなら moug モーグ | 即効テクニック | 図形の位置を設定する