엑셀 VBA 이미지 셀 영역에 맞춰서 넣는 방법, ShapeRange 함수 이용

 

환경: Microsoft Excel 2013

 

이번 예제는 매크로 함수를 이용해서 선택한 영역에 그림을 맞춰서 넣는 방법입니다. 셀의 크기에 상관없이 그림을 가로/세로 크기에 맞게 표현합니다. VBA 소스에서 중요한 것은 이미지를 추가하기 위한 다이얼로그를 띄우는 것과 이미지 객체에 선택한 영역의 크기 정보를 넣어서 동일한 크기를 만드는 것입니다.

 

먼저 Visual Basic 편집도구를 엽니다. 개발 도구 탭으로 가서 왼쪽 끝에 있는 Visual Basic 리본 메뉴를 클릭합니다.

엑셀 VBA 이미지 셀 영역에 맞춰서 넣는 방법, ShapeRange 함수 이용

 

다음은 셀에 그림을 넣는 함수를 하나 만들어야 합니다. 아래 소스를 그대로 복사해서모듈 페이지에 붙여 넣습니다. Sub 뒤에 붙은 함수명은 변경하셔도 됩니다소스에 대해서 간단하게 설명하겠습니다. 처음 나오는 Application.GetOpenFilename                    (filefilter:="Picture Files,*.jpg;*.bmp;*.tif;*.gif;*.png") VBA 에서 파일을 로딩할 때 쓰입니다. filefilter 에 입력된 내용은 추가 가능한 파일 확장자를 표시합니다. 화면에는 그림과 관련된 확장자 파일만 나타납니다. Application.GetOpenFilename 함수 실행으로 image 객체를 리턴 받습니다. 다음은 매크로 함수를 실행하기 전에 선택한 셀에 image 객체를 삽입하고 크기에 맞게 높이와 넓이를 조절하는 소스 입니다.

 

Sub 매크로_시트그림넣기()

    Dim img As Variant

    img = Application.GetOpenFilename _

                    (filefilter:="Picture Files,*.jpg;*.bmp;*.tif;*.gif;*.png")

    If img = False Then

        Exit Sub

    End If

  

    With ActiveSheet.Pictures.Insert(img).ShapeRange

        .LockAspectRatio = msoFalse

        .Height = Selection.Height '선택한 영영의 높이

        .Width = Selection.Width

        .Left = Selection.Left

        .Top = Selection.Top

    End With

End Sub

 

엑셀 VBA 이미지 셀 영역에 맞춰서 넣는 방법, ShapeRange 함수 이용

 

함수를 완성하고 다시 엑셀 워크시트 화면으로 돌아 옵니다. 위에서 만든 함수를 매크로에 연결해서 실행해 보겠습니다. [개발 도구] > [매크로] 리본 메뉴를 클릭합니다

엑셀 VBA 이미지 셀 영역에 맞춰서 넣는 방법, ShapeRange 함수 이용

 


매크로 대화상자에서 목록에 추가한 함수를 찾습니다. 함수가 많은 경우 상단에 매크로 이름을 넣어서 찾아도 됩니다. 목록에서 함수를 선택하고 오른쪽에 실행 버튼을 클릭합니다

엑셀 VBA 이미지 셀 영역에 맞춰서 넣는 방법, ShapeRange 함수 이용

 

매크로 함수 실행과 동시에 이미지를 추가하기 위한 [열기] 대화상자가 뜹니다. 엑셀 시트에 추가할 이미지를 선택하고 창을 닫습니다. 이 부분은 아래 소스가 수행합니다

 

Dim img As Variant

    img = Application.GetOpenFilename _

                    (filefilter:="Picture Files,*.jpg;*.bmp;*.tif;*.gif;*.png")

 

엑셀 VBA 이미지 셀 영역에 맞춰서 넣는 방법, ShapeRange 함수 이용

 

아래 그림은 매크로 함수를 실행한 결과 입니다. 선택한 영역에 맞게 이미지가 들어간 것을 볼 수 있습니다.

엑셀 VBA 이미지 셀 영역에 맞춰서 넣는 방법, ShapeRange 함수 이용

저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군


티스토리 툴바