엑셀 사진 삭제 및 이미지 랜덤으로 나오게 하는 매크로 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로 설정하시면 됩니다.