반응형

오늘은 엑셀 시트에 있는 모든 그림을 한번에 삭제하는 스크립트를 만들어 보겠습니다. 엑셀 시트에 첨부된 그림을 일일이 또는 어떤 조건에 맞는 모든 그림을 삭제 하는 것은 매우 귀찮은 일입니다. 일단 다중 선택을 위하여 하나하나 그림 개체를 선택해 주어야 하는데 대상을 잘못 클릭하거나 그 대상이 수백개 이상일 때는 정말 난처한 상황이 발생되죠.

그래서 이번에는 엑셀 시트에 있는 모든 그림을 삭제하는 방법 또는 특정 영역에 있는 모든 그림을 삭제하는 방법을 포스팅 하려고 합니다.

 

스크립트 내용은 아주 짧으니 참고하시면 됩니다.

 

Sub delPic() '영역안의 사진 지우기

    Dim cwkbook As Workbook
    Dim cwkSht As Worksheet
    
    Dim shpC As Shape
    Dim rngShp As Range
    Dim rngAll As Range
    Dim rngStartValue As String
    Dim rngEndValue As String
    
    Set cwkbook = ActiveWorkbook
    Set cwkSht = cwkbook.ActiveSheet
    
    rngStartValue = "A1"
    rngEndValue = "z9999"
    
    Set rngAll = cwkSht.Range(rngStartValue, rngEndValue)
    
    For Each shpC In cwkSht.Shapes
        Set rngShp = shpC.TopLeftCell
        If Not Intersect(rngAll, rngShp) Is Nothing Then
            shpC.Delete
        End If
    Next shpC
    
    Set rngAll = Nothing
    Set rngShp = Nothing
    
End Sub

 

스크립트 상단에 각종 변수를 정의해 주게 되는데요. 워크북 (엑셀 파일) 과 워크시트 (시트) 를 지정해주는 부분이 있습니다. 이곳에서는 일단 현재 활성화된 파일의 활성화된 워크시트를 선택해 주었습니다. 만약 특정 엑셀 파일을 지정할 계획이고 해당 엑셀 파일에 특정 시트에 대해 작업을 해주어야 한다면 해당 부분만 아래와 같이 작성해주면 됩니다.

Set cwkbook = Excel.Workbooks("엑셀파일이름.xlsx")
Set cwkSht = cwkbook.Worksheets("해당워크시트이름")

그 아래에 rngStartValue 와 rngEndValue 를 이용하여 영역의 시작부분과 끝부분의 셀 이름을 정해주면 해당 셀안에 있는 모든 그림은 삭제가 됩니다. 

만약 세로로 같은 열에 있는 그림만 삭제를 해야 한다면 시작칸과 종료칸의 열 번호를 동일하게 지정해 주면 됩니다.

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면  클릭!!  부탁드려요~

 

 

 

그림 한번에 삭제하기, 자동으로 붙여넣는 프로그램은 아래 포스트를 참고하세요.

2020/01/08 - [DEV/c#] - Excel Automate, 엑셀 자동화 프로그램

 

Excel Automate, 엑셀 자동화 프로그램

필자의 블로그 명칭을 보고 이미 알고 계신분이 있을지 모르겠지만 사실 저는 디자이너 입니다. 하지만 블로그에 맨 개발 관련 된 이야기만 적고 있지요. 음... 그런데 실제로 회사에서도 저는 대부분의 시간을 코..

diy-dev-design.tistory.com

 

현재 시트에서 사용자가 선택한 영역을 가져오는 것은 아래 포스트를 참고하시면 됩니다.

https://diy-dev-design.tistory.com/23?category=791049

 

[vba] 현재 엑셀 시트의 선택한 영역을 vba 스크립트에서 가져오기

vba를 이용하여 자동화를 하기 위하여는 어떤 범위에 있는 대상에 대하여 작업이 이루어 지는지를 설정 해주어야 합니다. 보통 range 라는 개체를 이용하여 설정을 해주게 되는데 이 range 를 현재 엑셀 시트에서..

diy-dev-design.tistory.com

 

특정 영역을 지정하여 스크립트를 동작시키는 것은 아래 포스트를 참고 바랍니다.

https://diy-dev-design.tistory.com/20?category=791049

 

[vba] 자동화를 위하여 엑셀의 영역 설정하는 방법

엑셀을 사용하는 목적 자체가 근본적으로 문서를 만들기 위함은 아니다 보니 세로 또는 가로로 굉장히 길게 데이터가 나열되어 있는 경우가 많습니다. 우리는 vba 를 이용하여 자동화를 할 것이기 때문에 어디부..

diy-dev-design.tistory.com

2019/10/24 - [DEV/VBA] - [vba] 버튼(단추)를 이용하여 스크립트 실행하기

 

[vba] 버튼(단추)를 이용하여 스크립트 실행하기

어떤 엑셀 페이지에 늘 사용하는 스크립트를 작성하였으나 매번 실행하기 위하여 vba 창을 눌러 F5를 누르는 것은 사실 본인이 직접 스크립트 코드를 개발하는 입장이라면 조금도 번거로울 것이 없는 것이지만 누..

diy-dev-design.tistory.com

 

이상으로 엑셀 시트에 있는 모든 그림을 삭제하는 스크립트 소개를 마치겠습니다.

 

도움이 되셨다면 공감 부탁드립니다.

그럼 이만~

반응형

+ Recent posts