[Q&A] [vba] 품목 사진 리스트 / 사진대지 / 쇼핑몰 사진대지 / 쇼핑몰 품목 사진 관리대장
하나를하더라도최선을
2020-02-15 22:24
5,485
0
-
- 첨부파일 : 상품DB-TEST.xlsm (69.8K) - 다운로드
본문
Q ::: 엑셀(Excel) 다른시트에서 조건에 부합하는 이미지 불러오기 (매크로)
아래와 같은 "사진"시트에 이미지를 포함한 리스트가 존재합니다.
여기서 이미지를 다른 시트로 불러가려면 좀 더 규칙적인 것이 필요하다
우선 이 부분부터 해결을 해보자...
바코드가 유니크한 값이 될 것 같네요.
바코드가 기준이 되어 이미지 및 데이터를 관리하도록 구현해 보겠습니다.
Sub 삽입된이미지이름을바코드로()
Application.ScreenUpdating = False
Dim shp As Shape, C As Range
For Each shp In Sheet1.Shapes
Set C = shp.TopLeftCell.MergeArea
shp.Name = "shp_" & C(1, 1).Offset(, 2).Value
shp.Top = C.Top + 2
shp.Left = C.Left + 2
shp.Width = C.Width - 4
shp.Height = C.Height - 4
Next
End Sub
이렇게 작성한 메소드(method)를 실행 하여 이미지를 바코드 기준으로 변경하였습니다.
다음으로 질문 내용으로는 위 "사진"시트의 데이터에서 아래와 같이 정리를 하고 싶은 것 같습니다.
"발주표" 시트와 "DATABASE" 시트의 연결고리는 바코드입니다.
바코드를 기준으로 이미지를 불러오는 작업을 구현해보겠습니다.
Sub 이미지불러오기()
Dim P As Picture, C As Range
Sheet2.Pictures.Delete
Dim i As Integer, n As Integer
Application.ScreenUpdating = False
For i = 11 To Sheet2.Cells(Rows.Count, "C").End(3).Row Step 13
For n = 4 To 16 Step 3
If Not IsError(Sheet2.Cells(i, n).Value) Then
Set P = isImage(Sheet2.Cells(i, n).Value)
If Not P Is Nothing Then
Set C = Sheet2.Cells(i + 1, n).MergeArea
C.Value = ""
C.Select
P.Copy
Sheet2.Paste Destination:=C
With Selection
.Width = C.Width - 4
.Height = C.Height - 4
.Top = C.Top + 2
.Left = C.Left + 2
End With
Else
Sheet2.Cells(i + 1, n).Value = "이미지 없음"
End If
End If
Next
Next
End Sub
Function isImage(ByVal shpName As String) As Picture
On Error GoTo ErrPass
Set isImage = Sheet1.Pictures("shp_" & shpName)
ErrPass:
If Err Then Err.Clear
End Function
이렇게 하여 이미지를 쉽게 불러올 수 있게 되었습니다.
아래는 "이미지불러오기" 메소드를 실행한 결과입니다.
댓글목록0