Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

Глава 22. Работа с лентой

713

Ниже приводится код процедуры d yn a m icM e n u C o n te n t. Эта процедура выполняет циклический просмотр ячеек в столбце А активного листа, считывает XML-код, а также со­ храняет его в переменной XMLcode. Как только XML-код будет добавлен в полном объе­ ме, он передается аргументу r e tu r n e d V a l. В результате элемент управления D yn a m ic ­ Menu получает новый код, в результате чего отображается другой набор параметров меню.

Sub d yn a m icM e n u C o n te n t(co n tro l As IR ib b o n C o n tro l, _

ByRef

re tu rn e d V a l)

Dim

r As Long

Dim

XMLcode As S trin g

'Считывание XML-кода с активного листа

For г = 1

То

A p p lic a tio n .C o u n tA (R a n g e ( "A :A "))

XMLcode

=

XMLcode & A c tiv e S h e e t. C e lls ( r , 1) & 11 "

N ext r

 

 

re tu rn e d V a l

= XMLcode

End Sub

К о м п а к т-д и ск

Рабочая книга, содержащая этот пример, находится на прилагаемом ком- пакт-диске в файле dynamicmenu.xlsm .

Некоторые замечания о настройке ленты

А теперь еще несколько замечаний, которые сослужат вам службу в процессе иссле­ дования чудесного мира настройки ленты Excel.

При работе с лентой убедитесь в том, что включен режим отображения ошибок. До­ полнительные сведения об этом режиме можно найти во врезке “Просмотр ошибок”.

Помните о том, что код RibbonX чувствителен к изменению регистра символов.

При именовании идентификаторов элементов управления применяется английский язык, причем они сохраняют свои названия во всех версиях Excel. Поэтому изме­ ненная лента будет работоспособной независимо от языка, используемого в вашей версии Excel.

Результат изменения ленты отображается только в том случае, когда содержащая код RibbonX рабочая книга будет активной. Если нужно, чтобы изменения ленты отображались для каждой рабочей книги, код RibbonX следует оформить в виде надстройки.

Встроенные элементы управления автоматически масштабируются при изменении размеров окна Excel. Пользовательские элементы управления всегда имеют одни и те же размеры, т.е. не масштабируются.

Добавление или удаление элементов управления из встроенной группы ленты не­ возможно.

Пользователь может скрывать вкладки. Для этого используется следующий код RibbonX (скрываются три вкладки).

ccustom UI

xm ln s= "h t t p : //s c h e m a s .m ic ro s o ft. c o m /o ffic e /2 0 0 6 /0 1 /

c u s to m u i">

< ribbon>

 

<tabs>

idM so="TabP ageLayoutE xcel" v is ib le = " fa ls e " />

< tab

<tab

idM so="TabD ata" v is ib le = " f a ls e " />

<tab

idM so="TabReview" v is ib le = " fa ls e " />

714

Часть VI. Разработка приложений

</ta b s >

</rib b o n > </c u s to m U I>

Можно также скрыть группы в составе вкладки. Ниже представлен код RibbonX, который скрывает четыре группы на вкладке Вставка (Insert), — остается лишь группа Диаграммы (Charts).

ccustom UI xm ln s= "h t t p : //s c h e m a s .m ic ro s o ft. c o m /o ffic e /2 0 0 6 /0 1 /

c u s to m u i">

 

 

 

< rib b o n >

 

 

 

<tabs>

 

 

 

<tab id M s o = "T a b In s e rt">

 

 

<group

id M so = "G ro u p In s e rtT a b le s E x c e l" v is ib le = " f a ls e " />

<group

id M s o = " G ro u p In s e rtIllu s tra tio n s " v is ib le = " f a ls e " />

<group

id M s o = "G ro u p In s e rtL in k s "

v is ib le = " f a ls e "

/>

<group

id M s o = "G ro u p In s e rtT e x t"

v is ib le = " fa ls e "

/>

</ta b >

</ta b s>

</rib b o n > </cu sto m U I>

Встроенному элементу управления можно назначить пользовательский макрос. Подобная операция называется изменением назначения элемента управления. Ни­ же представлен код RibbonX, который перехватывает три встроенные команды.

<customUI xm ln s= "h t t p : //s c h e m a s .m ic ro s o ft. c o m /o ffic e /2 0 0 6 /0 1 /

c u s to m u i">

 

<commands>

id M so = "F ile S a ve "

onA ctio n = "m yS a ve"/>

ccommand

<command

id M s o = " F ile P rin t"

o n A c tio n = "m y P rin t"/>

<command

id M s o = "F ile P rin tQ u ic k " o n A c tio n = "m y P rin t" />

< /commands>

 

 

</cu sto m U I>

 

 

Можно также создать код RibbonX, который отключает один или несколько встроенных элементов управления. Приведенный ниже пример кода отключает команду Вставить клип (Insert ClipArt).

<customUI xm ln s= "h t t p : //s c h e m a s .m ic ro s o ft. c o m /o ffic e /2 0 0 6 /0 1 / c u s to m u i">

<commands>

ccommand id M s o = " C lip A r tIn s e rt" e n a b le d = "fa ls e "/> < /commands>

</cu sto m U I>

Если в вашем распоряжении две или более рабочих книг (или надстроек), которые добавляют элементы управления в одну и ту же группу ленты, следует гарантиро­ вать использование ими одного и того же пространства имен. Для этого проверьте тег <CustomUI>, который находится в верхней части кода RibbonX.

Создание “старомодных” панелей инструментов

Если вы полагаете, что настройка ленты несколько обременительна, можеТе создать простую настраиваемую панель инструментов с помощью объекта CommandBar, ис­ пользуемого в предыдущих версиях Excel. Эта методика великолепно подходит для тех рабочих книг, с которыми будете работать только вы. Она также обеспечивает быстрый доступ к макросам.

Глава 22. Работа с лентой

715

В этом разделе будет представлен соответствующий пример кода, который вы смо­ жете легко адаптировать в соответствии со своими потребностями. Я не буду обременять вас излишними подробностями. Дополнительные сведения, касающиеся объекта Com­ mandBar, вы сможете найти в Интернете или в предыдущих изданиях этой книги. Объек­ ты CommandBar обладают намного большими возможностями, чем представленный вданном разделе пример.

Ограничения, присущ ие “старомодны м” панелям в Excel 2010

Если вы захотите создать панель инструментов для Excel 2010, помните о следующих ограничениях:

она не может быть “плавающей”;

она будет отображаться в группе Настраиваемые панели инструментов

(Custom Toolbars) вкладки Надстройки (Add-Ins) наряду с другими панелями ин­ струментов;

некоторые из свойств и методов объекта CommandBar просто игнорируются Excel.

Код панели инструментов

При выполнении кода, рассматриваемого в этом разделе, предполагается, что рабочая книга включает два макроса (M a c ro l и М асго2). Также предполагается, что панель ин­ струментов создается при открытии рабочей книги и удаляется — при ее закрытии.

П р и м еч а н и е

В отличие от результатов изменений ленты, настраиваемые панели отобра­ жаются независимо оттого, активизирована ли рабочая книга.

В модуле кода T h is W o rk b o o k

(ЭтаКнига) введите следующую процедуру. Во-

первых, вызывается процедура, которая создает панель инструментов при открытии ра­

бочей книги. Во-вторых, вызывается

процедура, которая удаляет панель инструментов

после закрытия рабочей книги.

P rivate

Sub W orkbook_Open()

C a ll C re a te T o o lb a r

 

End Sub

Sub W orkbook_B eforeC lose(C ancel As Boolean)

P rivate

C a ll D e le te T o o lb a r

 

End Sub

 

 

 

П ерекрестная ссы лка

 

В главе 19 описывалась потенциальная проблема, которая связана с собы­

 

тием workbook

Bef oreC lose. После запуска на выполнение обработчика со­

 

бытий workbook

Bef oreC lose отображается сообщение Excel “ Не хотите ли

сохранить...” (Do you want to save...). Если щелкнуть на кнопке Отмена (Cancel), рабочая книга остается открытой, но элементы настраиваемого меню будут удалены. В главе 19 также рассматривался способ решения этой проблемы.

Ниже представлен код процедуры C re a te T o o lb a r .

Const TOOLBARNAME As S trin g = "M yToolbar"

Sub C re a te T o o lb a r()

Глава 22. Работа с лентой

717

Face ID — число, которое определяет отображаемое на кнопке изображение;

O nA ction — макрос, который выполняется после щелчка на кнопке;

C a p tio n — экранная подсказка, отображаемая после установки указателя мыши над кнопкой.

С о в е т

©Вместо установки значения свойства FaceiD, установите значение свойства P ic tu re , используя любое из изображений imageMso. Например, следую­ щий оператор отображает зеленую “ галочку” .

.P ic tu re = A pplication.C om m andBars.G etIm ageM so _ ( " A c c e p tln v ita tio n " , 16, 16)

Для получения дополнительных сведений относительно изображений imageMso обратитесь к врезке “Использование изображений imageMso” .

После закрытия рабочей книги вызывается процедура обработки событий Workbook_Bef o r e C lo se , которая вызывает метод D e le teT o o lb a r .

Sub

D e le te T o o lb a r()

On

E r ro r

Resume N ext

 

CommandBars(TOOLBARNAME).Delete

On

E rr o r

GoTo 0

End

Sub