rand(life)

[vba] 셀범위를 그림으로 저장하기 본문

컴퓨터/엑셀

[vba] 셀범위를 그림으로 저장하기

flogsta 2017. 7. 25. 08:00

지정된 셀 범위를 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를 한 줄 집어넣었더니 이제 그림이 제대로 저장된다!