이번 예제는 매크로 함수를 이용해서 선택한 영역에 그림을 맞춰서 넣는 방법입니다. 셀의 크기에 상관없이 그림을 가로/세로 크기에 맞게 표현합니다. VBA 소스에서 중요한 것은 이미지를 추가하기 위한 다이얼로그를 띄우는 것과 이미지 객체에 선택한 영역의 크기 정보를 넣어서 동일한 크기를 만드는 것입니다.
▼ 먼저 Visual Basic 편집도구를 엽니다. 개발 도구 탭으로 가서 왼쪽 끝에 있는 Visual Basic 리본 메뉴를 클릭합니다.
▼ 다음은 셀에 그림을 넣는 함수를 하나 만들어야 합니다. 아래 소스를 그대로 복사해서모듈 페이지에 붙여 넣습니다. 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 이미지 셀 크기에 자동으로 삽입하는 매크로 만들기 ▶ 엑셀 VBA - 사용자 정의 폼에 그림표시와 셀에 추가하기 ▶ 엑셀 VBA 카메라 기능을 매크로로 작성하기 ▶ 엑셀 Excel 이력서 사진 추가, 셀에 이미지 고정시키기 ▶ 엑셀 Excel 선택창을 이용해서 그림, 이미지를 숨기기 |
▼ 매크로 대화상자에서 목록에 추가한 함수를 찾습니다. 함수가 많은 경우 상단에 매크로 이름을 넣어서 찾아도 됩니다. 목록에서 함수를 선택하고 오른쪽에 실행 버튼을 클릭합니다.
▼ 매크로 함수 실행과 동시에 이미지를 추가하기 위한 [열기] 대화상자가 뜹니다. 엑셀 시트에 추가할 이미지를 선택하고 창을 닫습니다. 이 부분은 아래 소스가 수행합니다.
Dim img As Variant
img = Application.GetOpenFilename _
(filefilter:="Picture Files,*.jpg;*.bmp;*.tif;*.gif;*.png")
▼ 아래 그림은 매크로 함수를 실행한 결과 입니다. 선택한 영역에 맞게 이미지가 들어간 것을 볼 수 있습니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 이미지 셀 크기에 자동으로 삽입하는 매크로 만들기 ▶ 엑셀 VBA - 사용자 정의 폼에 그림표시와 셀에 추가하기 ▶ 엑셀 VBA 카메라 기능을 매크로로 작성하기 ▶ 엑셀 Excel 이력서 사진 추가, 셀에 이미지 고정시키기 ▶ 엑셀 Excel 선택창을 이용해서 그림, 이미지를 숨기기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA GoTo 문 이용해서 줄로 분기하기 (2) | 2024.03.23 |
---|---|
엑셀 VBA Function 와 Sub 프로시저의 차이점과 사용법 알아 보기 (1) | 2024.03.16 |
엑셀 VBA 모듈(Module) 소스 파일 관리하기 (1) | 2024.03.05 |
엑셀 VBA 동일한 글자색 셀 개수 구하기 (9) | 2024.03.02 |
엑셀 VBA 지정한 파일 삭제하기 (0) | 2024.02.17 |
엑셀 VBA 행 열 숨기기와 보이기 구현 (0) | 2024.02.11 |
엑셀 VBA 시트에 있는 내용을 파일, 텍스트로 출력하기 (2) | 2024.01.28 |
엑셀 VBA - Value, Formula, FormulaR1C1, Text 속성으로 값 입력 및 읽기 (1) | 2024.01.24 |