오늘은 엑셀 시트에 있는 모든 그림을 한번에 삭제하는 스크립트를 만들어 보겠습니다. 엑셀 시트에 첨부된 그림을 일일이 또는 어떤 조건에 맞는 모든 그림을 삭제 하는 것은 매우 귀찮은 일입니다. 일단 다중 선택을 위하여 하나하나 그림 개체를 선택해 주어야 하는데 대상을 잘못 클릭하거나 그 대상이 수백개 이상일 때는 정말 난처한 상황이 발생되죠.
그래서 이번에는 엑셀 시트에 있는 모든 그림을 삭제하는 방법 또는 특정 영역에 있는 모든 그림을 삭제하는 방법을 포스팅 하려고 합니다.
스크립트 내용은 아주 짧으니 참고하시면 됩니다.
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, 엑셀 자동화 프로그램
현재 시트에서 사용자가 선택한 영역을 가져오는 것은 아래 포스트를 참고하시면 됩니다.
https://diy-dev-design.tistory.com/23?category=791049
특정 영역을 지정하여 스크립트를 동작시키는 것은 아래 포스트를 참고 바랍니다.
https://diy-dev-design.tistory.com/20?category=791049
2019/10/24 - [DEV/VBA] - [vba] 버튼(단추)를 이용하여 스크립트 실행하기
이상으로 엑셀 시트에 있는 모든 그림을 삭제하는 스크립트 소개를 마치겠습니다.
도움이 되셨다면 공감 부탁드립니다.
그럼 이만~
'DEV > VBA' 카테고리의 다른 글
[vba] 엑셀 시트의 모든 색상의 셀 색상 제거하기 (0) | 2019.09.02 |
---|---|
[VBA]RGB 색상 값이 들어있는 셀에 셀 색상 지정하기 (5) | 2019.08.30 |
[VBA] 문자열 가지고 놀기 (0) | 2019.08.12 |
[vba] 현재 엑셀 시트의 선택한 영역을 vba 스크립트에서 가져오기 (0) | 2019.08.01 |
[vba] For 구문 이용하기와 offset 사용 해 보기 (0) | 2019.07.12 |