あることを思い立ち、エクセルのマクロで作ってみたものがある。そのため、図形を操作するマクロについて調べている。
エクセルのマクロは習得が簡単だ。その理由のひとつに「マクロの記録」がある。マクロで自動化したい操作を「マクロの記録」を実行してマウスやキーボードで操作すると、その操作がマクロとなって記録される。これはいわばユーザーの操作を記録しているわけで、このマクロを分析し加工すれば思いのままに操作を自動化できる。
例えばMicrosoft Excel 2003でオートシェイプを作り、形を変化させ、回転する、という操作をマクロに記録すると、次のようなマクロができる。
------------------------------------------------------------------------------------------------------------------
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 7/19/2010? ユーザー名 :
'
'
??? ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 124.5, 87.75, 126.75, 53.25).Select
??? Selection.ShapeRange.Adjustments.Item(1) = 0.5
??? Selection.ShapeRange.IncrementRotation 35.28
End Sub
------------------------------------------------------------------------------------------------------------------
ActiveSheet.Shapes.AddShape()によってシートにオートシェイプが作られる。()の中には5つの引数があり、最初のmsoShapeRoundedRectangleがオートシェイプの種類、続く4つの数字はオートシェイプの大きさと位置を決めている。これらの数値を変更したマクロを作り実行すると、引数は「オートシェイプの種類、横の位置、縦の位置、横の大きさ、縦の大きさ」であることがわかる。
Selection.ShapeRange.Adjustments.Item()はオートシェイプの変形だ。オートシェイプの中には黄色の菱形アンカーポイントを持つものがあり、変形することができる。
Selection.ShapeRange.IncrementRotationはオートシェイプの回転であり、右回りの回転角度で指定する。右回りに90度回転させるなら値は「90」だ。
ここで自動的に作成されたマクロでオートシェイプを作ることができるが、より実際的にオートシェイプを操作するためには、次のように書くこともできる。
●オートシェイプを作成する
ActiveSheet.Shapes.AddShape msoShapeRoundedRectangle, 10, 20, 50, 60
●作成したオートシェイプを右に5度回転させる
Sheet1.Shapes(1).IncrementRotation (5)
●作成したオートシェイプの横の大きさを100に変える
Sheet1.Shapes(1).Width = 100
●作成したオートシェイプの塗りを半透明化する
Sheet1.Shapes(1).Fill.Transparency = 0.5
●作成したオートシェイプの変形を0.5にする
Sheet1.Shapes(4).Adjustments.Item(1) = 0.5