画像の入れ替え
資料作成時に、オートシェイプや画像を利用することがあります。
それらを一度配置してから一切手を付けないのであれば別に問題ありませんが、実際の資料作りではいろいろ検討する中で画像や図形を変更したり、差し替えたりといった作業が出てきます。
そのような画像の配置作業は、微調整が結構必要だったりして、時間を費やすことがあります。その中でも、画像の差し替えで元の画像と同じ位置に新しい画像を配置する場合に、適当なセルに新しい画像を挿入後にマウスや十字キーで微調整をしたりして、これがなかなか時間がかかります。
以下で紹介するマクロは、そのような画像やオートシェイプなどの図形の位置を入れ替える処理を瞬時に行います。
これにより、2つの画像や図形の配置作業の時間短縮につながります。
コード
以下のマクロは、画像やオートシェイプなどの図形を2つ選択して実行すると、2つの画像の位置を入れ替えます。
Excelでは画像、図形(オートシェイプ)、アイコン、SmartArt、数学の公式、など、いくつかの種類の画像がありますが、それらの種類に関係なく2つ選択して実行できます。
2つの画像を選択していない場合はメッセージボックスを表示し、2つ選択することを促します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Sub SwapImages() On Error GoTo ERR_EXIT Dim iCount As Long '// 画像数 Dim iTop As Single '// 上位置 Dim iLeft As Single '// 左位置 Dim shp1 As Shape '// 1つ目の画像 Dim shp2 As Shape '// 2つ目の画像 '// 画像数を取得 iCount = Selection.ShapeRange.Count '// 2つ選択していない場合 If iCount <> 2 Then MsgBox "画像を2つ選択してください" '// 処理を抜ける Exit Sub End If '// 2つの画像をShape変数にセット Set shp1 = Selection.ShapeRange.Item(1) Set shp2 = Selection.ShapeRange.Item(2) '// 1つ目の画像の上位置と左位置を保持 iTop = shp1.Top iLeft = shp1.Left '// 1つ目の画像の上位置と左位置を、2つ目の画像の位置に書き換え shp1.Top = shp2.Top shp1.Left = shp2.Left '// 2つ目の画像の上位置と左位置を、1つ目の画像の位置に書き換え shp2.Top = iTop shp2.Left = iLeft '// 処理終了 Exit Sub '// 以降、エラー発生時 ERR_EXIT: MsgBox "画像を選択してください" End Sub |
使い方
入れ替えたい画像を2つ選択します。写真でもSmartArtでも構いません。ここではオートシェイプを2つ選択しています。
上で紹介したSwapImages()を実行します。実行後は以下のように場所が入れ替わります。選択状態のままのため、再度実行すると元の位置にまた戻ります。