PROGRAMMING WORKSHOP

CustomUI...[Ribbon]_02

주간강좌를 중단하고 나면 시간이 좀 헐렁할줄 알았는데
일이 더 많아 졌다..
워크샵화일을 올려야 하는데..하는데..하면서 시간에
쫓기면서 은근히 스트레스를 받는다
짧게 짧게라도 올리는 것이 좋겠다 싶어서..
짧게 짧게 올리도록 하자

2007버전을 열면 리본이 진열장 같다
물론 [리본메뉴최소화]로 눈앞에서 사라지게 할수도 있지만



더더욱 활짝 열어서 사용하고 싶다..



그림과 같이 ..몽땅 사라지고 셀들만 보이게 한다
VBA에서 리본부분을 안보이게 하려면 어떻게 하여야 할까??

Private Sub chkView_Click() chkView.Caption = IIf(chkView, "ShowAll", "HideAll") ShowHideAll Not chkView.Value End Sub Sub ShowHideAll(bX As Boolean) With Application .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon""," & bX & ")" .CommandBars("Status Bar").Visible = bX .DisplayFormulaBar = bX .DisplayScrollBars = bX .Caption = "UNO-PROGRAMMING-WORKSHOP" .ActiveWindow.DisplayHeadings = bX .ActiveWindow.DisplayWorkbookTabs = bX End With End Sub 딴것은 죄다 별신기한 것없이 버전에 관계없이
사용하는 것이고 ...딱 한줄이 특이하다

Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon""," & bX & ")"

매크로 4.0의 함수를 사용하면 된다는 이야기..
Application오브젝트의 ExecuteExcel4Macro 메소드에 문자열로
매크로 4.0시절 사용하던 매크로 4.0함수를 실행시켜서 작업을 한셈이다
ExecuteExcel4Macro메소드는 매크로 4.0함수를 실행시키기 위한 인터페이스다
한 줄 잘챙겨 두시고..

아무튼 Ribbon..즉 2007버전이후의 메뉴시스템은 XML화일을 열고
뚝딱거려야 자기맘에 드는 메뉴시스템을 만들수 있다
오피스의 모든 제품이 그렇게 되지만 Outlook만 COM-Addin이라는
DLL화일로 만들어서 처리한다..물론 OFFICE의 다른 제품도 COM-Addin으로
처리할수 있는 것이고..
2003버전이전에서는 VBA로 처리하였었는데
XML문서로 처리한다..
좀더 쉽고 편해졌다고 할수 있다
물론 XML문이 낯섫지 않게 되면 훨씬 편리할 것이다
지난회 화일에서 새로운 리본을 XML문으로 넣었었는데
만약 각 콘트롤의 Label명을 한글로 넣으면 아무것도 이루어지지않고
customUI.xml화일을 더블크릭하여 열어보면
아래의 그림과 같이 에러가 나는 것을 볼수 있다



Label부분에 한글을 입력한것을 XML문이 이해하지 못하고
에러를 낸것이다
uno-xl-programming의 xml부분을 같이 보시고 계시다면
이미 별문제가 아니겠지만..아무튼
customUI.xml문서의 시작부분에 아래의 한줄을 더 추가하시면
해결된다

<?xml version="1.0" encoding="euc-kr"?>

XML번역기에 "지금부터 한글을 입력할것이니..번역잘하라!!"고 지시하는
부분이 Encoding속성의 정보인것이다



앞페이지에서 소개한 customUI xml문서 편집기는 참 편리한데
한글을 사용하기 위한 일을 하면 버그가 퍽퍽 발생하여 사용할수 없다
그냥 참고로 사용하면서 스스로 작성하는 것이 좋을 것이다

그리고 참고로 Access프로그램에서 리본은 별도의 테이블을 만들어서
customerUI XML문을 테이블의 레코드정보로 저장하고 사용한다
그러니 별도의 XML문서는 필요없다

아무튼..XML형식을 쫌 이해하고..
XML문만 뚝딱가리면 얼마던지 원하는 메뉴를 만들수 있다는 것
괞찮지 않은가??
그러나 VBA를 모르면 아무짝에도 소용없다
메뉴를 만들면 뭐하나??!!
리본의 해당 콘트롤을 크릭하거나 값을 바꾸면
어떤 일이 실행되게 하기 위하여서는
VBA프로그래밍을 하여야 한다
물론 VBA없이 그냥 XML문만 작성하여 리본을 만든다고 하면
기존의 메뉴(Built-In controls)들을 안보이게 하거나 작동을 할수 없게 하는 정도는 할수 있을 것이다
그러나 프로그래머는 별짓을 다해야 하니까..
이제 이렇게 정의한 리본을 (customized ribbon) VBA에서 제어를 해보자
예를 들어서 사용하는 통합문서상의 어떤 범위의 정보를
리본의 메뉴중에 콤보상자에 통합문서가 열리면서 콤보상자의 목록에
주루룩 담아지게 하고 싶을수 있을 것이다
앞에서 한것은 그냥 리본을 Static하게 만든 죽은 메뉴이고
이렇게 Dynamic하게 메뉴의 내용을 상황에 따라서 바꿔줄수 있는
동적인 작업같이 신나는것을 위하여 VBA가 필요하게 되는 것이다

이번 페이지에서는 아래의 그림과 같은 일을 해보도록 하자



이런 저런 기능의 추가와 인터페이스(UI)의 변화는 VBA를 잘 하는 사람들의
가치를 점점 더 높여줄 것이다
물론 새로운 기술을 계속 업데이팅해나갈때..!!




***[LOG-IN]***