• 쇼핑몰
  • 커뮤니티
  • 북마크

vb6.0/vba




[Q&A] [vba] 품목 사진 리스트 / 사진대지 / 쇼핑몰 사진대지 / 쇼핑몰 품목 사진 관리대장

하나를하더라도최선을
2020.02.13 02:39 708 0
  • - 첨부파일 : 품목 사진 리스트.xlsm (8.1M) - 다운로드

본문



Q ::: 1:1질문 드립니다. 



아래와 같은 "사진"시트에 이미지를 포함한 리스트가 존재합니다.


c9db4240b2aab1692a034e7be3525b7d_1581528460_6977.png


여기서 이미지를 다른 시트로 불러가려면 좀 더 규칙적인 것이 필요하다
우선 이 부분부터 해결을 해보자...
바코드가 유니크한 값이 될 것 같네요. 한데 올려진 사진처럼 바코드가 없는 것도 있네요... ㅠ.ㅠ
바코드가 없는 정보는 무시하기로 하고 바코드가 기준이 되어 이미지 및 데이터를 관리하도록 구현해 보겠습니다. 


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(11).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)를 실행 하여 이미지를 바코드 기준으로 변경하였습니다.



다음으로 질문을 짐작하기로는 위 "사진"시트의 데이터에서 아래와 같이 정리를 하고 싶은 것 같습니다.

(질문이 구체적인 설명이 하나도 없음)


c9db4240b2aab1692a034e7be3525b7d_1581528460_8447.png
 

"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 StringAs Picture
    On Error GoTo ErrPass
    Set isImage = Sheet3.Pictures("shp_" & shpName)
ErrPass:
    If Err Then Err.Clear
End Function



이렇게 하여 이미지를 쉽게 불러올 수 있게 되었습니다.


1. 이전 질문에서도 질문 내용이 부족한 탓에 원하는 답변을 얻을 수 없었음

2. 이번 질문역시 질문 내용이 부족하여 내 맘대로 만듬



댓글목록 0

등록된 댓글이 없습니다.