選択した図形の回転と複製、そしてそれらの組み合わせについて整理してみました。今回はWordやPowerPointでも使えます。
■選択した図形を数値入力値の角度で回転
----------------------
Sub 図形回転()
' 選択した図形を取得
Dim selectedShape As Shape
Set selectedShape = Selection.ShapeRange(1)
' ユーザーから回転角度を数値入力してもらう
Dim rotationAngle As Double
rotationAngle = _
CDbl(InputBox("回転角度を入力してください(度数法)"))
' 図形を回転
With selectedShape
.IncrementRotation rotationAngle
End With
End Sub
----------------------
なお、Selection.ShapeRange(1) は・・・
----------------------
Sub 図形複製()
' 選択した図形を取得
Dim selectedShape As Shape
Set selectedShape = Selection.ShapeRange(1)
' 図形を複製
Dim duplicatedShape As Shape
Set duplicatedShape = selectedShape.Duplicate
End Sub
----------------------
上は処理結果ですが、出来れば同じ位置に複製したいのでソースを再考。
■選択図形を同じ位置に複製
----------------------
Sub 選択図形を同じ位置に複製()
' 選択した図形を取得Dim selectedShape As Shape
Set selectedShape = Selection.ShapeRange(1)
' 図形を複製
Dim duplicatedShape As Shape
Set duplicatedShape = selectedShape.Duplicate
' 複製された図形は元データの位置に
duplicatedShape.Left = selectedShape.Left
duplicatedShape.Top = selectedShape.Top
End Sub
----------------------
なんとか同じ位置に複製できました。
■選択図形を指定位置に複製
----------------------
Sub 選択図形を指定位置に複製()
' 選択した図形を取得Dim selectedShape As Shape
Set selectedShape = Selection.ShapeRange(1)
' 図形を複製
Dim duplicatedShape As Shape
Set duplicatedShape = selectedShape.Duplicate
' 複製された図形は元データの位置に
duplicatedShape.Left = selectedShape.Left
duplicatedShape.Top = selectedShape.Top
' 複製された図形を移動するなどの処理を行う
' 例えば、複製された図形を右に移動する場合
' 水平方向の移動量(ピクセル)
Dim offsetX As Long
offsetX = 50
' 垂直方向の移動量(ピクセル)
Dim offsetY As Long
offsetY = 50
' 図形を移動
selectedShape.Left = selectedShape.Left + offsetX
selectedShape.Top = selectedShape.Top + offsetY
End Sub
----------------------
上は処理結果です。
■選択した図形を複製し数値入力値の角度で回転
----------------------
Sub 選択図形を複製して回転()
' 選択した図形を取得
Dim selectedShape As Shape
Set selectedShape = Selection.ShapeRange(1)
' 図形を複製
Dim duplicatedShape As Shape
Set duplicatedShape = selectedShape.Duplicate
' 複製された図形は元データの位置に
duplicatedShape.Left = selectedShape.Left
duplicatedShape.Top = selectedShape.Top
' ユーザーから回転角度を数値入力してもらう
Dim rotationAngle As Double
rotationAngle = _
CDbl(InputBox("回転角度を入力してください(度数法)"))
' 複製された図形を回転
With duplicatedShape
.IncrementRotation rotationAngle
End With
End Sub
----------------------
上は処理結果です。