VBA 仕事効率 記事

【Excel VBA】スクショした画像以外の図形を一括選択する方法【結合テスト効率化】

記事のターゲット

  • 開発現場で結合テスト等の画面キャプチャを伴うエビデンスが必要な人
  • エビデンスに画像だけでなく吹き出し等の補助説明を求められている人
  • VBAに関しての知識がある人

はじめに

 開発現場等でスクリーンショット等で画面キャプチャをExcelに貼り付け、その画像に吹き出しや枠線を用いて操作の手順を説明することが多いと思います。

ただ、同じような作業なので別のテストケースで使用したエビデンスから説明用のパーツのみ使いまわしたいときがある方も多いはず(私はそうでした)。でも実際にコピーしようとするときにCtrl+Aでの全選択では必要ない画像まで選択してしまい面倒ですよね。

なので今回は自分で指定した範囲内のスクショ画像以外の図形(今回は吹き出し、コメントボックス、枠線)のみを選択するマクロを紹介します。

やりたいこと

下の画像のようにスクショと図形が配置されたExcelで指定した範囲内にある図形のみを選択できるようにしていきます。

実際のコード

上の画像のように開発タブを開き、マクロをクリックします。

以下の画面が表示されたらマクロ名を入力し、作成をクリックします。

開かれたVBAの画面に以下のコードをそのまま貼り付けてもらえば実行できると思います。

Option Explicit

Sub パーツ選択()
    Dim shp As Shape
    Dim ran As Range
    Dim sel

    Set sel = Selection
'    選択シート内の図形全てを判定
    For Each shp In ActiveSheet.Shapes
 
'        図形が配置されているセルの範囲を取得
        Set ran = Range(shp.TopLeftCell, shp.BottomRightCell)
'        選択した範囲と図形が配置されている範囲が被っていれば選択
        If Not Application.Intersect(ran, sel) Is Nothing Then
            If shp.Type = 1 Then
                shp.Select Replace:=False
            End If
            If shp.Type = 17 Then
                shp.Select Replace:=False
            End If
        End If
    Next

End Sub

コードの途中にある1と17の数字は「MsoShapeType 列挙」というExcelの図形に割り当てられている値です。

ですのでもし選択したい図形が他にもある場合は以下のリファレンスを参考に、Ifブロックを追加していただければ応用が利きます。

https://docs.microsoft.com/ja-jp/office/vba/api/office.msoshapetype

他のExcelファイルでもこのマクロを使用したい場合はアドイン追加すれば便利ですので試してみてください。

おわりに

 今回のマクロを使用するとある程度のまとまりを一括選択し、グループ化することで動かしやすくなったりほぼ同じテスト内容を行うときに一括して吹き出し等をコピーすることができると思います。ただ、きちんと内容を変えることは忘れないようにしてください。

-VBA, 仕事効率, 記事
-, , , ,

© 2024 ビギテック