기타

[엑셀/VBA]입력한 파일명을 읽어 이미지를 일괄적으로 넣어주는 버튼만들기

깜쿤댕이 2020. 3. 9. 19:49
반응형

엑셀의 데이터(텍스트)를 기반으로
동일한 이름을 가진 일러스트 아이콘 파일을 검색해 자동으로 삽입해주는 
작업을 진행하였습니다.

아무래도 이미지 파일이 들어가면 데이터가 많아져서 엑셀이 더 무거워진다는 단점이 있습니다만
해당 내용은 데이터를 기반으로 따로 발표나 다른 작업자에게 이미지 참고용으로 넘겨주는 용도일 때 쓰면 좋을 것 같아요.

 게임 기획 시 장비나 각종 스킬 등의 아이콘을 넣을 때도 사용할 수 있기 때문에 굉장히 활용성이 높을 것 같아서 기록에 남깁니다.





- 준비 - 

직접 사용하실 이미지가 있으면 사용하셔도 좋고

 

저는 예시를 위해

인터넷에서 무료 아이콘을 찾았습니다. 


(자료)
https://www.elegantthemes.com/blog/freebie-of-the-week/colorful-playful-softies-icons

필요하시면 위 링크에 들어가서 받으시거나 아래 첨부 파일을 확인하셔서 사용하시면 될 것 같습니다. 

저는 64px 사이즈의 이미지를 사용하였습니다.

softies-icons.zip
7.88MB

 



- 본문 - 

이제 본격적으로 작업에 들어가 보겠습니다.
우선 임시로 테이블 형태로 표를 만들어보겠습니다.

icon들어갈 자리와 icon이름

번호는 사실 필요 없지만 허전해서(?) 넣어 봤습니다.
중요한 건 이미지가 들어갈 공간, 그리고 파일명입니다.

 

원하시는 파일이 있으시다면 해당 위치에 적으시면 됩니다.
저는 아까 링크드렸던 파일명을 적도록 하겠습니다.
(경로는 필요 없습니다. 경로는 VBA 코드에서 처리할 예정입니다.)

파일 불러오기

아까 받은 파일에서 불러올 이미지들의 각 파일명을 확인합니다.

각 파일명 입력

그리고 위와 같이 파일명을 전부 입력해줍니다. (D = 4열)

이제부터는 본격적으로 VBA 작업에 들어가시면 됩니다.

Alt F11 을 누르시면
아래와 같은 작업 창을 불러옵니다.

VBA작업창

당장 코드를 입력해야 할 모듈이 보이지 않습니다.
모듈을 만들어줍시다.

VBA새 모듈 작성

개체에서 우 클릭 -> [삽입] -> [모듈]을 선택하시면 새로운 모듈이 나옵니다.

VBA 모듈 작성 2




그리고 아래와 같이 코드를 입력해줍니다. 

VBA 코드 입력

 

Sub import_image()
 Dim i As Integer, Col_FN As Integer, Col_Ph As Integer
 Dim Pat_FN As String
   Application.ScreenUpdating = False
    Pat_FN = "D:\softies-icons\softies-icons\PNG\64px\" '파일의 위치
     Col_FN = 4            '파일 이름이 위치한 열: A -> 1
     Col_Ph = 3            '그림이 들어갈 열: B -> 2

    For i = 4 To 14    '4행에서 14행까지

        With ActiveSheet.Shapes.AddPicture(Pat_FN & Cells(i, Col_FN).Value, msoFalse, msoTrue, ActiveSheet.Cells(i, Col_Ph).Left + 1, ActiveSheet.Cells(i, Col_Ph).Top + 1, 35, 35)

             
        End With
    Next i
  Application.ScreenUpdating = True
End Sub

윗부분만 복붙을 풀어두긴 했는데 혹시 막혀있다면 아래 텍스트 파일 별도 첨부하니 다운로드하여 사용하셔도 좋습니다.

 

Kkamkun excel19.txt
0.00MB


 위 내용은 import_image라는 이름으로 정의한 것이고
붉은색 부분들을 보시면 '이미지의 위치'(파일의 위치)를 적은 것을 보실 수 있습니다.

그리고 파일 이름이 들어간 열과 이미지가 들어갈 열을 설정하고
몇 행에서~ 몇 행까지 해당 내용을 반복할지를 설정했습니다.

가장 하단의 붉은색 표시 부분을 보시면 위 내용을 바탕으로 이미지를 입력하는 코드가 들어 있습니다!

더 상세히 설명하면 좋겠지만
아직은 긁어오는 것들을 짜집기 하는 수준이라 생략하겠습니다.


다음에 충분히 설명할 수준이 된다면 내용을 보충하도록 하겠습니다.

 

 


위의 작업이 끝나면 이제 매크로를 실행시킬 버튼을 만들어줍시다.

VBA 버튼 넣기

[개발 도구] -> [삽입] -> [단추]
를 선택하시면 됩니다.

*개발 도구 탭이 없으신 분들은 엑셀 좌측 상단의
[파일] -> [옵션] -> [리본 사용자 지정]에서
우측에 있는 [개발도구] 설정을 활성화하시면 됩니다.

개발도구 활성화

버튼을 생성하시면 아래와 같이 매크로를 지정하라는 창이 뜹니다.

매크로 지정, 이름

그때  import_image를 설정하시면 됩니다.
(위에서 작업한 코드의 이름입니다.)

매크로 버튼 생성

그러면 위의 이미지처럼 짠하고 버튼이 생성됩니다.

이제 이 녀석을 누르면 아까 작업한 매크로가 실행됩니다.






..

...

...

짠!

 

매크로 버튼 실행


순식간에 끝나버렸네요.
매번 하나하나 그림을 삽입하는 건 중노동인데
간단한 작업만으로 여러 곳에 응용할 수 있게 된 것입니다...!!

야근은 안녕..





 

 

*추가로 활용 팁을 드리자면

아래의 붉은 표시 부분이
이미지를 불러올 때 어느 정도의 크기로, 어느 위치에 불러올 것인가?입니다.

VBA수정팁

위의 작업에서는 35x35 였는데, 100x 100으로 하면...?

네 아래처럼 그림들이 튀어나옵니다.
직접 시도해보시면서 최적의 크기를 찾으면 좋을 것 같습니다.

큰 이미지로 불러오기 완료

 

 

이상입니다!

감사합니다.

 

* 블로그 이사하기 전 네이버 블로그, 2017. 6. 28. 23:16에 올렸던 글입니다.

**옮기면서 일부 최신으로 수정하였고, 기존의 원본 글 쪽은 삭제하였습니다.

 

**태클과 새로운 정보, 각종 댓글 언제든 환영입니다.**

반응형