Q ::: 1:1질문 드립니다.
아래와 같은 "사진"시트에 이미지를 포함한 리스트가 존재합니다.
여기서 이미지를 다른 시트로 불러가려면 좀 더 규칙적인 것이 필요하다
우선 이 부분부터 해결을 해보자...
바코드가 유니크한 값이 될 것 같네요. 한데 올려진 사진처럼 바코드가 없는 것도 있네요... ㅠ.ㅠ
바코드가 없는 정보는 무시하기로 하고 바코드가 기준이 되어 이미지 및 데이터를 관리하도록 구현해 보겠습니다.
Sub 삽입된이미지이름을바코드로()
Application.ScreenUpdating = False
Dim shp As Shape, C As Range
For Each shp In Sheet3.Shapes
Set C = shp.TopLeftCell.MergeArea
shp.Name = "shp_" & C(1, 1).Offset(, 4).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)를 실행 하여 이미지를 바코드 기준으로 변경하였습니다.
다음으로 질문을 짐작하기로는 위 "사진"시트의 데이터에서 아래와 같이 정리를 하고 싶은 것 같습니다.
(질문이 구체적인 설명이 하나도 없음)
"2020-02-05" 시트와 "사진" 시트의 연결고리는 바코드입니다.
바코드를 기준으로 이미지를 불러오는 작업을 구현해보겠습니다.
Sub 이미지불러오기()
Dim P As Picture, C As Range
Sheet2.Pictures.Delete
Dim i As Integer, n As Integer
Application.ScreenUpdating = False
For i = 3 To Sheet2.Cells(Rows.Count, "A").End(3).Row Step 5
For n = 1 To 5
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 - 2, n).Resize(2) '// .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 - 2, n).Value = "이미지 없음"
End If
End If
Next
Next
End Sub
Function isImage(ByVal shpName As String) As Picture
On Error GoTo ErrPass
Set isImage = Sheet3.Pictures("shp_" & shpName)
ErrPass:
If Err Then Err.Clear
End Function
이렇게 하여 이미지를 쉽게 불러올 수 있게 되었습니다.
1. 이전 질문에서도 질문 내용이 부족한 탓에 원하는 답변을 얻을 수 없었음
2. 이번 질문역시 질문 내용이 부족하여 내 맘대로 만듬