완성 예
할까 말까 약간 망설이고 있었는데 '탭에 이미지 컨트롤을 삽입하는 방법'에 대해 질문하신 분이 있었습니다. 업무상 피가 되고 살이 될 것... 같지는 않습니다만, 디카로 찍은 사진들을 보관해 두었다가 나만의 갤러리를 만들어 보는 것도 좋을 것 같습니다.
#이모습오데로 #그때가좋았어
예제 파일을 열고 [My Gallery] 탭에 있는 [One Fine Day] 컨트롤을 클릭하면 이미지들이 아래로 좌르륵~ 펼쳐지고, 이미지를 클릭하면 웹 사이트가 열립니다. 어떤가요? 생일이나 각종 기념일 선물로도 손색이 없을 것 같지 않습니까? 그렇다고 이것만 믿고 결혼기념일이나 생일을 맞이하야 정략적으로(?) 깜빡하진 마시고요. (^^;)
어떻게 만드는지 작업 순서를 알아보도록 하죠.
리본X 코드 작성하기
역시나 첫 번째 단계는 문패를 달 집을 마련하는 것입니다.
1. [파일] - [새로 만들기]를 클릭하여 새로운 파일을 하나 만듭니다.
2. [파일] - [복사본 저장](또는 다른 이름으로 저장) - [Excel 매크로 사용 통합 문서]를 선택한 다음 적당한 이름으로 저장하고 파일을 닫습니다.
3. Custom UI Editor를 실행하여 앞에서 작성한 매크로 사용 통합 문서를 불러옵니다. XML로 다음과 같은 리본X 코드를 작성합니다.
<customUI xmlns='http://schemas.microsoft.com/office/2006/01/customui'>
<ribbon>
<tabs>
<tab id="MyTab" label="My Gallery" insertBeforeMso="TabHome">
<group id="grpImage" label="Insert Image">
<gallery id="MyGallery1" label="One Fine Day" size="large"
columns="3" itemWidth="133" itemHeight="100"
imageMso="PictureInsertFromFile" onAction="WhatShallIDo">
<item id="pic_01" image="pic_01"/>
<item id="pic_02" image="pic_02"/>
<item id="pic_03" image="pic_03"/>
<item id="pic_04" image="pic_04"/>
<item id="pic_05" image="pic_05"/>
<item id="pic_06" image="pic_06"/>
<item id="pic_07" image="pic_07"/>
<item id="pic_08" image="pic_08"/>
<item id="pic_09" image="pic_09"/>
<item id="pic_10" image="pic_10"/>
<item id="pic_11" image="pic_11"/>
<item id="pic_12" image="pic_12"/>
</gallery>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
CODE
여기까지는 이전에 살펴본 리본 커스터마이징 방법과 크게 다르지 않습니다만, 이미지를 삽입하는 경우에는 한 가지 과정이 추가됩니다. 일단 필요한 이미지는 특정한 위치에 저장되어 있다고 가정하고 진행합니다.
4. Custom UI Editor에서 [Insert Icons] 아이콘을 클릭합니다. [Insert Custom Icons] 대화상자에서 삽입할 이미지들을 선택하고 [열기] 버튼을 클릭합니다. 여러분 PC에서 이미지 파일이 있는 폴더를 지정하시면 됩니다.
에디터 오른쪽 창에 삽입될 이미지의 썸네일 이미지가 표시되면 제대로 된 것입니다.
만약 삽입된 이미지의 ID를 변경하거나 삭제하려면 해당 썸네일을 마우스 오른쪽 버튼으로 클릭하고 단축 메뉴 중에서 선택하면 됩니다.
콜백(CallBack) 프로시저 만들기
1. [Generate Callbacks] 아이콘을 클릭하면 콜백 프로시저가 생성됩니다. 범위를 지정한 다음 마우스 오른쪽 버튼을 클릭하고 [Copy] 메뉴를 선택합니다.
2. [Save] 버튼을 클릭하여 현재 파일을 저장합니다.
3. 엑셀로 돌아와서 해당 파일을 엽니다. VB Editor에서 모듈을 하나 삽입하고, 앞에서 복사한 콜백 프로시저를 붙여넣기 합니다. 다음 코드를 참고로 콜백 프로시저의 내용을 작성합니다. 각 사진별로 좀 더 의미있는 내용을 삽입하려면 코드의 내용을 보완하면 됩니다.
Sub WhatShallIDo(control As IRibbonControl, id As String, index As Integer)
Select Case index + 1
Case 1: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic242.asp"
Case 2: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic243.asp"
Case 3: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic244.asp"
Case 4: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic246.asp"
Case 5: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic266.asp"
Case 6: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic268.asp"
Case 7: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic278.asp"
Case 8: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic278.asp"
Case 9: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic279.asp"
Case 10: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic279.asp"
Case 11: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic303.asp"
Case 12: OpenMyWeb "http://www.iexceller.com/MyPhotos/Pic342.asp"
End Select
End Sub
'--------------------
Private Sub OpenMyWeb(strX As String)
On Error GoTo ET
ActiveWorkbook.FollowHyperlink Address:=strX, NewWindow:=True
ET:
If Err.Number <> 0 Then
MsgBox strX & "사이트를 열 수 없습니다", , "Error Number : " & Err.Number
On Error GoTo 0
Err.Clear
End If
End Sub
CODE
파일을 닫았다가 다시 열어서 확인해 보세요. [One Fine Day] 버튼을 클릭했을 때 나타나는 이미지의 열 수나 크기는 리본X 코드에서 columns 속성 값을 조정하면 됩니다. 이미지가 더 추가되거나 삭제하는 경우라면 <item> 태그를 상황에 맞게 조절해야겠죠?
응용력을 발휘하면 영상 카드나 디지털 앨범을 만드는 것도 얼마든지 가능합니다. 응용해 보시고 재미있는 것이 나왔을 경우 알려주시면 소개해 드리겠습니다.