ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

エクセルのマクロで図形を操作する(1) – マクロでオートシェイプを作成する

leave a comment »

あることを思い立ち、エクセルのマクロで作ってみたものがある。そのため、図形を操作するマクロについて調べている。

エクセルのマクロは習得が簡単だ。その理由のひとつに「マクロの記録」がある。マクロで自動化したい操作を「マクロの記録」を実行してマウスやキーボードで操作すると、その操作がマクロとなって記録される。これはいわばユーザーの操作を記録しているわけで、このマクロを分析し加工すれば思いのままに操作を自動化できる。

例えば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

Written by Yoshio Matsumoto

2010年7月17日 @ 9:15 AM

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。