rand(life)
[vba] 셀범위를 그림으로 저장하기 본문
지정된 셀 범위를 png, jpg 등 그림 파일로 저장하는 매크로이다
지식인 질문글에 대한 답변이다.
Option Explicit
Sub Macro()
Dim rng As Range
Dim T As String
T = "d:\" & "배정표_" & Format(Date, "yymmdd")
Set rng = Range("A1:AI42")
rng.CopyPicture xlScreen, xlPicture
With ActiveSheet.ChartObjects.Add(0, 0, rng.Width, rng.Height)
.ShapeRange.Line.Visible = msoFalse
.Select
.Chart.Paste
.Chart.Export T & ".png", "PNG"
.Delete
End With
MsgBox T & ".png 저장완료!", 64, "저장완료"
End Sub
랭킹 1위의 큰형님답게, 코드가 깔끔하다.
사실은 이것과 비슷한 코드를 다른 곳에서 먼저 찾은 적이 있다.
코드를 살펴보면 큰형님의 것과 별 다르지 않다. 다만 선택한 범위의 모든 셀에 대해 셀 하나당 그림파일 하나씩 저장한다는 점만 다를 뿐.
하지만, 실제로 해보면 그림파일이 저장이 되긴 한데, 아무것도 없는 흰색 화면만 나온다.
답변 받은 사람은 잘 된다고 하는데 내 컴퓨터에서는 제대로 나오지 않는다.
더 이상한 것은, F8 키를 눌러서 한 단계씩 실행을 해보면 또 그림이 제대로 나온다!
이렇게 이상한 현상을 해결하기 위해 검색을 실시했더니, 어떤 사람이 단서를 제시해주었다.
엑셀 2016버전에서는 차트를 한번 선택해주어야한다는 것이다.
큰형님이 제시한 답변에다 위와 같이 .Select를 한 줄 집어넣었더니 이제 그림이 제대로 저장된다!