오피스 개체 일괄 삭제 매크로 만드는 방법

2024. 1. 23. 22:50 / 서기랑

 엑셀에서 그림이나 도형 등의 개체를 일괄 삭제하기 위해서는 이동 기능을 사용하여 선택 후 삭제를 하면 된다.

 하지만 간혹 이동을 사용해도 선택이 되지 않아 삭제되지 않는 개체가 있는 경우가 있는데 이런 경우에는 간단한 매크로를 만들어서 삭제를 시도해 보자.

목차 (Contents)

     

    오피스 개체 일괄 삭제 매크로 만들기

    1. vba 매크로 실행.

     엑셀에서 [Alt + F11]을 눌러 vba 매크로를 실행하자.

     (단축키가 작동하지 않는다면 리본 메뉴에서 [개발 도구 -> Visual Basic]를 클릭)

     

    2. 개체 일괄 삭제 코드 입력.

     매크로 창이 나타나면 상단 메뉴에서 [삽입 -> 모듈]을 클릭한 뒤 코드 입력 창에 아래의 코드를 입력하자.

    Sub DeleteShapes()
     Dim shp As Shape
     For Each shp In ActiveSheet.Shapes
      shp.Delete
     Next shp
    End Sub

    개체 일괄 삭제 매크로 코드

     전체 개체가 아닌 그림, 도형, 선 등을 각각의 구분하여 일괄 삭제를 원한다면 굵게 표시한 부분의 코드를 아래의 코드로 대체하면 된다.

    그림만 일괄 삭제
    If shp.Type = msoPicture Then
     shp.Delete
    End If

    그림 제외 개체 일괄 삭제
    If shp.Type <> msoPicture Then
     shp.Delete
    End If

    도형만 일괄 삭제
    If shp.Type = msoAutoShape Then
     shp.Delete
    End If

    도형 제외 개체 일괄 삭제
    If shp.Type <> msoAutoShape Then
     shp.Delete
    End If

    선만 일괄 삭제
    If shp.Type = msoLine Then
     shp.Delete
    End If

    선 제외 개체 일괄 삭제
    If shp.Type <> msoLine Then
     shp.Delete
    End If

    도명 개체 일괄 삭제 코드

    3. 매크로 실행.

     코드를 입력했다면 매크로를 실행하자.

     vba 창 상단에 [▶] 아이콘을 클릭하거나, [F5]를 누르면 실행할 수 있으며 또한 엑셀 창에서는 [Alt + F8]을 눌러 매크로 창을 열고 실행하면 된다.

     매크로가 실행되면 현재 시트의 개체가 일괄 삭제될 것이다.

     

    그 외 내용

     엑셀 문서에서 개체를 추가하고 삭제하는 작업을 자주 한다면 위 코드를 활용하여 유저폼을 만들어 사용하는 것도 좋다.

     

     개체는 그림, 도형, 선 외에도 다양하게 분류되기 때문에 이를 구분해서 일괄 삭제하고자 한다면 shp.Type에서 사용할 수 있는 열거형을 알면 되는데 열거형은 대략 아래와 같으니 필요한 부분이 있다면 코드를 수정해서 사용하면 된다.

    msoAutoShape: 도형
    msoCallout: 발표 도구
    msoCanvas: 캔버스
    msoChart: 차트
    msoComment: 주석
    msoDiagram: 다이어그램
    msoEmbeddedOLEObject: 내장 OLE 개체
    msoFormControl: 폼 컨트롤
    msoFreeform: 자유형 도형
    msoGroup: 그룹
    msoInk: 잉크
    msoInkComment: 잉크 주석
    msoLine: 선
    msoLinkedOLEObject: 연결된 OLE 개체
    msoLinkedPicture: 연결된 그림
    msoOLEControlObject: OLE 컨트롤 개체
    msoPicture: 그림
    msoPlaceholder: 플레이스홀더
    msoScriptAnchor: 스크립트 앵커
    msoShapeTypeMixed: 혼합된 형태
    msoTable: 표
    msoTextBox: 텍스트 상자
    msoTextEffect: 텍스트 효과
    msoWebVideo: 웹 비디오