CommandBar|CommandBars|CommandBar|Item|Name|OnAction|
|NameLocal|BuiltIn|Type|Controls|Caption|TopLeftCell|
|DoEvents|Reset|ShowPopup|Controls.Add|OffSet|
|CommandBars.Add|Parent|Buttons.Add|Worksheets.Add|
CommandBar오브젝트
Window,Range,WorkSheet,WorkBook,Application오브젝트등을
대강 살펴 보았고 이제 다른 오브젝트를 하자
각각의 페이지에서 해당오브젝트를 완벽히 설명없이 다른
오브젝트로 가지만 다른 오브젝트를 설명하면서
앞에서 각각의 오브젝트부분에서 설명하지 못한것을 추가
보충하면서 진행한다
이 페이지에서 이야기 하려고 하는 CommandBar오브젝트도 결국은
Application오브젝트의 직속하위 오브젝트이다
그러나 오브젝트를 바꿔서 이야기하더라고 앞에서 이야기 하였던것들을
상호 관련시켜가면서 진행된다(Cross Referencing)
앞에서 이야기했지만 오브젝트들은 독립적이면서 상호 부모자식관계등을
유지하는 상호 의존적이기도 한것이다
보기/도구모음/사용자지정메뉴에 의하여 아래와 같은 대화상자를 통하여
자기가 필요한 명령줄과 명령버튼들을 구성하여 사용할수 있다
이것을 프로그래밍적으로 처리하여 사용하기 싶다면
CommandBar(명령줄) 오브젝트에 접근하면 되는것이다
예를 들어서 Sheet1에서 작업할때 사용하는 명령줄과
Sheet2에서 사용하는 명령줄을 다르게 하고 싶다거나 필요한 상황은
많을것이고 CommandBar오브젝트의 속성이나 메소드를 알게 되면
자유스럽게 활용하게 된다
우선 CommandBar오브젝트에 접근하려면 어떤 표현식이 필요한가?
다른 오브젝트와 마찬가지로 하나,하나의 오브젝트를 관리하는
집합체(Collection)오브젝트가 있다는 점을 상기하시고..
Dim oCmdBar As CommandBar
Set oCmdBar=Application.CommandBars("명령줄이름")
혹은
Set oCmdBar=Application.commandBars.Item(인덱스번호)
집합체오브젝트에서 Item은 생략해도 된다 아래와 같이..
Set oCmdBar=Application.commandBars(인덱스번호)
로 하면 되는것이다
그렇다면 명령줄의 이름을 좀 알아야 겠다
아래의 Application을 크릭하시고 나타나는것을 차례대로 크릭하시면
CommandBar오브젝트의 Name속성과 NameLocal속성에서 얻어낸 이름을
볼수 있다(영문이름(Name속성)을 크릭하면 한글표기(NameLocal 속성)으로
얻어낸 값을 볼수 있다
한글표기를 사용하여 CommandBar오브젝트에 접근하려고 하면
에러가 나니 항상 영문이름을 사용하도록 한다
버전마다 약간의 차이는 있으나 아래와 같이 CommandBar가 엑셀화일에
존재한다..참으로 많다!!기능이 많다는 이야기다
엑셀에는 명령줄이 몇개나 들어있나??
엑셀이 갖고 있는 명령줄을 모두 나열해보자
아래와 같은 테이블이 만들어진다
No | Name | NameLocal | BuiltIn | Controls.Count | Index | Type |
1 | Worksheet Menu Bar | 워크시트 메뉴 모음 | True | 10 | 1 | 1 |
2 | Chart Menu Bar | 차트 메뉴 모음 | True | 10 | 2 | 1 |
3 | Standard | 표준 | True | 24 | 3 | 0 |
4 | Formatting | 서식 | True | 19 | 4 | 0 |
5 | PivotTable | 피벗 테이블 | True | 11 | 5 | 0 |
6 | Chart | 차트 | True | 9 | 6 | 0 |
7 | Reviewing | 검토 | True | 14 | 7 | 0 |
8 | Forms | 양식 | True | 16 | 8 | 0 |
9 | Stop Recording | 기록 중지 | True | 2 | 9 | 0 |
10 | External Data | 외부 데이터 | True | 7 | 10 | 0 |
11 | Formula Auditing | 수식 분석 | True | 12 | 11 | 0 |
12 | Full Screen | 전체 화면 | True | 1 | 12 | 0 |
13 | Circular Reference | 순환 참조 | True | 4 | 13 | 0 |
14 | Visual Basic | Visual Basic | True | 7 | 14 | 0 |
15 | Web | 웹 | True | 10 | 15 | 0 |
16 | Control Toolbox | 컨트롤 도구 상자 | True | 15 | 16 | 0 |
17 | Exit Design Mode | 디자인 모드 끝내기 | True | 1 | 17 | 0 |
18 | Refresh | 새로 고침 | True | 2 | 18 | 0 |
19 | Drawing | 그리기 | True | 22 | 19 | 0 |
20 | WordArt | WordArt | True | 9 | 20 | 0 |
21 | Picture | 그림 | True | 13 | 21 | 0 |
22 | Query and Pivot | 쿼리 및 피벗 테이블 | True | 17 | 22 | 2 |
23 | PivotChart Menu | 피벗 차트 메뉴 | True | 6 | 23 | 2 |
24 | Workbook tabs | 통합 문서 탭 | True | 16 | 24 | 2 |
25 | Cell | 셀 | True | 19 | 25 | 2 |
26 | Column | 열 | True | 11 | 26 | 2 |
27 | Row | 행 | True | 11 | 27 | 2 |
28 | Cell | 셀 | True | 18 | 28 | 2 |
29 | Column | 열 | True | 18 | 29 | 2 |
30 | Row | 행 | True | 18 | 30 | 2 |
31 | Ply | 시트 | True | 8 | 31 | 2 |
32 | XLM Cell | XLM 셀 | True | 12 | 32 | 2 |
33 | Document | 문서 | True | 9 | 33 | 2 |
34 | Desktop | 바탕 화면 | True | 6 | 34 | 2 |
35 | Nondefault Drag and Drop | 끌어서 놓기 기본값 사용 안 함 | True | 11 | 35 | 2 |
36 | AutoFill | 자동 채우기 | True | 11 | 36 | 2 |
37 | Button | 단추 | True | 12 | 37 | 2 |
38 | Dialog | 대화 상자 | True | 3 | 38 | 2 |
39 | Series | 연속 데이터 | True | 5 | 39 | 2 |
40 | Plot Area | 그림 영역 | True | 8 | 40 | 2 |
41 | Floor and Walls | 밑면 및 옆면 | True | 3 | 41 | 2 |
42 | Trendline | 추세선 | True | 2 | 42 | 2 |
43 | Chart | 차트 | True | 2 | 43 | 2 |
44 | Format Data Series | 데이터 계열 서식 | True | 6 | 44 | 2 |
45 | Format Axis | 축 서식 | True | 4 | 45 | 2 |
46 | Format Legend Entry | 범례 항목 서식 | True | 4 | 46 | 2 |
47 | Formula Bar | 수식 입력줄 | True | 9 | 47 | 2 |
48 | PivotTable Context Menu | 피벗 테이블 상황에 맞는 메뉴 | True | 13 | 48 | 2 |
49 | Query | 쿼리 | True | 15 | 49 | 2 |
50 | Query Layout | 쿼리 레이아웃 | True | 22 | 50 | 2 |
51 | AutoCalculate | 자동 계산 | True | 7 | 51 | 2 |
52 | Object/Plot | 개체/그림 | True | 14 | 52 | 2 |
53 | Title Bar (Charting) | 제목 표시줄(차트) | True | 3 | 53 | 2 |
54 | Layout | 레이아웃 | True | 17 | 54 | 2 |
55 | Pivot Chart Popup | 피벗 차트 팝업 | True | 7 | 55 | 2 |
56 | Phonetic Information | 윗주 정보 | True | 4 | 56 | 2 |
57 | Shadow Settings | 그림자 설정 | True | 6 | 57 | 0 |
58 | 3-D Settings | 3차원 설정 | True | 10 | 58 | 0 |
59 | Borders | 테두리 | True | 2 | 59 | 0 |
60 | Chart Type | 차트 종류 | True | 1 | 60 | 0 |
61 | Pattern | 무늬 | True | 4 | 61 | 0 |
62 | Font Color | 글꼴 색 | True | 3 | 62 | 0 |
63 | Fill Color | 채우기 색 | True | 7 | 63 | 0 |
64 | Line Color | 선 색 | True | 7 | 64 | 0 |
65 | Order | 순서 | True | 4 | 65 | 0 |
66 | Nudge | 조금 이동 | True | 4 | 66 | 0 |
67 | Align or Distribute | 맞춤/배분 | True | 11 | 67 | 0 |
68 | Rotate or Flip | 회전 또는 대칭 | True | 5 | 68 | 0 |
69 | Lines | 선 | True | 6 | 69 | 0 |
70 | Connectors | 연결선 | True | 9 | 70 | 0 |
71 | AutoShapes | 도형 | True | 8 | 71 | 0 |
72 | Callouts | 설명선 | True | 20 | 72 | 0 |
73 | Flowchart | 순서도 | True | 28 | 73 | 0 |
74 | Block Arrows | 블록 화살표 | True | 28 | 74 | 0 |
75 | Stars & Banners | 별 및 현수막 | True | 16 | 75 | 0 |
76 | Basic Shapes | 기본 도형 | True | 32 | 76 | 0 |
77 | Shapes | 도형 | True | 15 | 77 | 2 |
78 | Inactive Chart | 비활성 차트 | True | 9 | 78 | 2 |
79 | Excel Control | Excel 컨트롤 | True | 8 | 79 | 2 |
80 | Curve | 곡선 | True | 18 | 80 | 2 |
81 | Curve Node | 곡선의 결절점 | True | 15 | 81 | 2 |
82 | Curve Segment | 곡선 세그먼트 | True | 13 | 82 | 2 |
83 | Pictures Context Menu | 그림 상황에 맞는 메뉴 | True | 12 | 83 | 2 |
84 | OLE Object | OLE 개체 | True | 9 | 84 | 2 |
85 | ActiveX Control | ActiveX 컨트롤 | True | 9 | 85 | 2 |
86 | WordArt Context Menu | WordArt 상황에 맞는 메뉴 | True | 14 | 86 | 2 |
87 | Rotate Mode | 회전 모드 | True | 6 | 87 | 2 |
88 | Connector | 연결선 | True | 14 | 88 | 2 |
89 | Script Anchor Popup | 스크립트 앵커 팝업 | True | 4 | 89 | 2 |
90 | Matrix | Matrix | False | 3 | 90 | 0 |
91 | PivotTable Field List | 피벗 테이블 필드 목록 | True | 1 | 91 | 0 |
92 | Watch Window | 조사식 창 | True | 1 | 92 | 0 |
93 | Borders | 테두리 | True | 4 | 93 | 0 |
94 | Protection | 보호 | True | 5 | 94 | 0 |
95 | Text To Speech | 텍스트 읽어주기 | True | 5 | 95 | 0 |
96 | List | 목록 | True | 11 | 96 | 0 |
97 | Compare Side by Side | 나란히 비교 | True | 3 | 97 | 0 |
98 | Auto Sum | 자동 합계 | True | 6 | 98 | 2 |
99 | Paste Special Dropdown | 선택하여 붙여넣기 드롭 다운 | True | 6 | 99 | 2 |
100 | Find Format | 서식 찾기 | True | 3 | 100 | 2 |
101 | Replace Format | 서식 바꾸기 | True | 3 | 101 | 2 |
102 | List Range Popup | 목록 범위 팝업 | True | 20 | 102 | 2 |
103 | List Range Layout Popup | 목록 범위 레이아웃 팝업 | True | 21 | 103 | 2 |
104 | XML Range Popup | XML 범위 팝업 | True | 19 | 104 | 2 |
105 | List Range Layout Popup | 목록 범위 레이아웃 팝업 | True | 19 | 105 | 2 |
106 | Drawing Canvas | 그리기 캔버스 | True | 3 | 106 | 0 |
107 | Organization Chart | 조직도 | True | 5 | 107 | 0 |
108 | Diagram | 다이어그램 | True | 7 | 108 | 0 |
109 | Ink Drawing and Writing | 잉크 그리기 및 쓰기 | True | 6 | 109 | 0 |
110 | Ink Annotations | 잉크 주석 | True | 7 | 110 | 0 |
111 | Borders | 테두리 | True | 1 | 111 | 0 |
112 | Draw Border | 테두리 그리기 | True | 2 | 112 | 0 |
113 | Drawing and Writing Pens | 그리기 및 쓰기 펜 | True | 12 | 113 | 0 |
114 | Annotation Pens | 주석 펜 | True | 12 | 114 | 0 |
115 | Drawing and Writing Pens | 그리기 및 쓰기 펜 | True | 9 | 115 | 0 |
116 | Annotation Pens | 주석 펜 | True | 9 | 116 | 0 |
117 | Insert Shape | 도형 삽입 | True | 3 | 117 | 0 |
118 | Canvas Popup | Canvas Popup | True | 12 | 118 | 2 |
119 | Organization Chart Popup | Organization Chart Popup | True | 9 | 119 | 2 |
120 | Diagram | 다이어그램 | True | 5 | 120 | 2 |
121 | Layout | 레이아웃 | True | 5 | 121 | 2 |
122 | Select | 선택 | True | 4 | 122 | 2 |
123 | MSN Money Stock Quotes | MSN Money Stock Quotes | False | 5 | 123 | 0 |
124 | Task Pane | 작업창 | True | 1 | 124 | 0 |
125 | | | True | 0 | 125 | 0 |
126 | Add Command | 명령 추가 | True | 15 | 126 | 2 |
127 | Built-in Menus | 기본 제공 메뉴 | True | 46 | 127 | 2 |
128 | Clipboard | 클립보드 | True | 0 | 128 | 0 |
129 | Envelope | 봉투 | True | 1 | 129 | 0 |
130 | Online Meeting | 온라인 모임 | True | 7 | 130 | 0 |
아마도 어떤분은 나이도 많이 먹은 우노가 눈도 안아픈가??
위와 같은 표를 어떻게 일일이 만들었을까??눈이 빠졌겠다!!
천만의 말씀이다..엑셀은 떡사먹으려고 하는것이 아니다
아래와 같이 엑셀에서 프로시져를 돌리면 HTML에 필요한 테이블과 내용이
순간에 그려 진다(물론 HTML문을 이해하여야겠지)
그리고 웹지식을 요리조리 가미하면 된다
결국은 컴퓨터 프로그래밍은 몇가지 단어들을 이해하고 요리 조리
조합해서 활용하면 되는것이다
에이~!@#여보슈..말이 쉽지..!!!라고 하려나??!!
Sub commandbarListingHTML()
Dim oCmdBar As CommandBar
Dim shtX As Worksheet, iX As Integer
Dim sX As String
Set shtX = Worksheets.Add
sX = "<TABLE><TR>"
sX = sX & "<TD>No</TD>"
sX = sX & "<TD>Name</TD>"
sX = sX & "<TD>NameLocal</TD>"
sX = sX & "<TD>BuiltIn</TD>"
sX = sX & "<TD>Controls.Count</TD>"
sX = sX & "<TD>Index</TD>"
sX = sX & "<TD>Type</TD></TR>"
For Each oCmdBar In Application.CommandBars
iX = iX + 1
sX = sX & "<TR>"
sX = sX & "<TD>" & iX & "</TD>"
sX = sX & "<TD>" & oCmdBar.Name & "</TD>"
sX = sX & "<TD>" & oCmdBar.NameLocal & "</TD>"
sX = sX & "<TD>" & oCmdBar.BuiltIn & "</TD>"
sX = sX & "<TD>" & oCmdBar.Controls.Count & "</TD>"
sX = sX & "<TD>" & oCmdBar.Index & "</TD>"
sX = sX & "<TD>" & oCmdBar.Type & "</TD>"
sX = sX & "</TR>"
Next
sX = sX & "</TABLE>"
shtX.Range("A1") = sX
End Sub
실행하면 Range("A1") 셀에 HTML문으로 테이블을 구성하는 문자열정보가
만들어지고 이것을 복사하여 웹문서에 붙여주면 끝!
각자 복사하여 실행시켜보시고
위의 테이블에서 BuiltIn속성에서 False값으로 된것이 2개가 있다
이것은 엑셀이 내장(Built-In)하고 있는 것이 아니고
사용자정의명령줄((User Defined CommandBar)이다
즉 앞으로 여러분들이 만들어서 사용하게될 명령줄도 포함되는것이다
사용하다 보면 쓸데 없는 것이 만들어진 채로 쓰레기 같이 존재하고 있으니
위와 같이 실행하고 False값이 나오는 것은 검토하고 없애 버리는것이
효율적인 엑셀의 자원관리가 되는셈이다
Controls.count는 해당 CommandBar오브젝트가 갖고 있는 콘트롤의 갯수를
알려준다
CommandBar Type은 모두 3가지 타입이 있다
PopUp Bar타입은 오른쪽마우스크릭을 통한 단축메뉴(ShortCut Menu)나
Menu Bar타입에서 DropDown으로 열리는 메뉴들을 말한다
명령줄을 새로만들거나 기존의 명령줄을 수정하거나..
다른 집합체(Collection)오브젝트와 마찬가지로 새롭게 만들어 내거나
삭제하거나 수정할수 있다
그러나 내장된 명령줄은 삭제할수 없다
내장된 명령줄은 눈에 보이지 않게 숨어있을뿐 삭제된것은 아니므로
명령줄이 눈에 보이지 않는다고 걱정할 필요는 하나도 없다
아래는 갖고 있는 콘트롤없이 CommandBar(명령줄)만 추가 시켜본다
Application.CommandBars.Add | Dim oX As CommandBar Set oX=Application.CommandBars.Add oX.Name="newBar" |
| |
위와 같이 빈탕의 CommandBar오브젝트는 말짱 아무일도 못한다
명령을 수행할수 있는 Control들이 CommandBar오브젝트의 자식들로 추가
되어야 한다
또한 기존의 CommandBar에 콘트롤을 추가한다면 아래와 같이 될것이다
Dim oCtl As CommandBarPopup
Set oCtl = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup)
oMenuCtl.Caption = "TEST"
기존 명령줄에 만들어진 사용자정의 콘트롤을 없애고 싶으면
Application.CommandBars(1).Reset
Reset메소드를 사용하면 된다
아래의 화일을 실행해보자
화일의 내용은..
- Application.CommandBars집합체의 모든 CommandBar를 시트에 리스팅한다
- 각각의 리스트에 버튼을 만든다
- 버튼을 실행하면 해당 CommandBar가 잠시 눈에 나타나고 사라진다
- Popup명령줄과 Button명령줄과 Menu명령줄을
눈에 보이게 할때 Popup과 Visible의 차이
- 다른 프로그램(웹)을 위한 문자열정보를 만드는 요령
- 반복되는 문자열 가공 작업을 보면
엑셀은 시간을 투자해도 절대 손해가 아니라는것!!
List Commandbar And See Which Is Which