【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

オートシェイプ内テキストボックスの削除

Excelでオートシェイプを選択してテキストの追加を選んだりキーを押したりするとテキストボックスが付きます。間違えて付けてしまっても削除する方法がありません。どうしても邪魔な場合、同じ位置・形・色でオートシェイプを作成して、元のオートシェイプを削除することになります。

この作業を自動で行うマクロを作成しました。

Sub 枠内削除()
    Dim W As Worksheet, SH As Shape, NSH As Shape, C As Collection, T$
    For Each W In Worksheets
        Set C = New Collection
        For Each SH In W.Shapes
            If SH.AutoShapeType = msoShapeRectangle And Not SH.Fill.Visible Then
                On Error Resume Next
                T = "NO"
                T = SH.TextFrame.Characters.Text
                If T = "" Then C.Add SH
                On Error GoTo 0
            End If
        Next SH
        For Each SH In C
            Set NSH = W.Shapes.AddShape(msoShapeRectangle, SH.Left, SH.Top, SH.Width, SH.Height)
            NSH.Fill.Visible = msoFalse
            NSH.Line.Visible = SH.Line.Visible
            NSH.Line.Style = SH.Line.Style
            NSH.Line.Weight = SH.Line.Weight
            NSH.Line.ForeColor = SH.Line.ForeColor
            NSH.ControlFormat.PrintObject = SH.ControlFormat.PrintObject
            SH.Delete
        Next SH
    Next W
End Sub

このマクロは四角形のオートシェイプだけを対象としています。それ以外の用途には改造してみてください。