PROGRAMMING WORKSHOP

CustomUI...[Ribbon]_03

Ribbon을 다루다 보면..
아니..그럼..그동안 열나게 갈고 딱은 기존의 메뉴를 만드는
코드를 열심히 연마했는데..씁...전부 버려버려한단 말인가??!!
아니다!!!
아래와 같이 하면 기존의 콘트롤들을 그대로
리본속에 삽입되게 하여 사용할수 있는 것이다
궁금한 분들은 이미 만들어 보셨을 것이다
시트에 버튼을 하나 달고 아래의 프로시져를 달아서 실행시켜보시기바란다

Sub addControl() Dim oCtl As CommandBarButton Set oCtl = Application.CommandBars(1).Controls.Add( _ Office.MsoControlType.msoControlButton) With oCtl .Style = msoButtonIconAndCaption .Caption = "테스트버튼" .FaceId = Int(Rnd() * 1000) + 10 .OnAction = "CheckMe" End With End Sub Sub CheckMe() MsgBox "이렇게.." '이곳에 실행하고 싶은 내용을 넣으면 되겠지!!! End Sub

위와 같이 하면 아래와 같이 만들어진다


[추가기능]이라는 탭이 생기고 이곳에 버튼이 만들어진것이다
MS아저씨들이 미친넘들이 아닌담에..
지난버전을 개무시하는 그런 경우는 없을 것이다..
backward compatibility는 항상 고려하여야 하는 것이니..
추가기능탭이라는 것으로 셋방살이 하듯이 끼워 넣어준다
이곳에 만들고 싶은 이전의 메뉴나 버튼내용을 VBA로 작성하여
만들어서 사용하면 된다
XML문으로 작성하는 리본만큼 더더욱 확장된 것이라고 보시면 된다
XML문으로 된 리본을 작성하여도 좋고 그냥 이전에 하던 방법대로
하여도 좋고..
실은 VBA와 더불어 VSTO(Visual Studio Tools For Office)라는 것으로
.Net FrameWork의 모든 기능을 엑셀과 짬뽕을 시켜서
개발해 나갈수 있게 한것이 VSTO이고 엑셀의 버전이 올라가면
올라갈수록 엑셀의 파워는 막강해진다
좀더 개발자들에게 개발의 광야를 넓찍하게 펼쳐준셈이다

아무튼 위의 프로시져를
계속 반복하여 실행시키면 아래와 같이 버튼이 추가될것이고..



그런데 이것을 어떻게 없애나..



혹은
아래 구문을 실행하여 삭제하시기 바란다
콘트롤이 모두 삭제되면 추가기능탭도 사라지게 된다

Sub deleteControls() Dim oCtl As Object For Each oCtl In Application.CommandBars(1).Controls oCtl.Delete Next End Sub

2003이하버전의 것을 몽땅 살려보자
화일이 열리면서 미리 설계하여 놓은대로 리본의 콘트롤이 아닌
자동으로 아래의 그림과 같이 지난 버전의 콘트롤들을
몽땅 잡화상같이 널어 놓아보자



이것은 2007버전의 XML형식의 메뉴시스템이 아닌..
2003이하버전의 콘트롤들이다



***[LOG-IN]***