엑셀 사진 삭제 및 이미지 랜덤으로 나오게 하는 매크로 VBA 작성 방법 문의 드립니다.
Excel VBA를 사용하여 원하시는 기능을 구현하는 방법은 다음과 같습니다.
먼저, 이미지를 삽입하고 삭제하는 VBA 코드를 작성해야 합니다. 아래 코드는 셀 A1에 이미지를 삽입하고 이전에 삽입된 이미지를 삭제하는 코드입니다.
vba
Sub InsertAndDeleteImage()
Dim pic As Picture
Dim rng As Range
Dim imgPath As String
Dim imgNumber As Integer
' 기존에 삽입된 이미지가 있다면 삭제
For Each pic In ActiveSheet.Pictures
If pic.Name = "RandomPic" Then
pic.Delete
End If
Next pic
' 랜덤하게 이미지 번호 선택 (1, 2, 3 중 하나)
imgNumber = Int((3 - 1 + 1) * Rnd + 1)
' 이미지 파일 경로 설정
imgPath = "d:\사진\" & imgNumber & ".jpg"
' 이미지 삽입 위치 설정 (A1셀)
Set rng = ActiveSheet.Range("A1")
' 이미지 삽입
With ActiveSheet.Pictures.Insert(imgPath)
.Name = "RandomPic"
.Top = rng.Top
.Left = rng.Left
.ShapeRange.LockAspectRatio = msoFalse
.ShapeRange.Height = rng.Height
.ShapeRange.Width = rng.Width
End With
End Sub
위의 코드를 VBA 편집기에 붙여넣고 실행하면, "d:\사진" 폴더에 있는 1.jpg, 2.jpg, 3.jpg 중 하나가 랜덤하게 선택되어 셀 A1에 삽입됩니다.
매크로를 다시 실행하면 이전에 삽입된 이미지는 삭제되고, 새로운 이미지가 다시 삽입됩니다.
이 코드는 간단한 예제로, 실제 사용 시에는 파일 경로, 셀 위치 등을 실제 환경에 맞게 조정하셔야 합니다. 또한, 이 코드는 이미지의 크기를 셀의 크기에 맞게 조정하는데, 원본 이미지의 비율을 유지하려면 .ShapeRange.LockAspectRatio = msoTrue로 설정하시면 됩니다.