<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2606944694254464677</id><updated>2011-12-10T04:21:38.813+02:00</updated><category term='Word 2007'/><category term='Динамическое меню'/><category term='лента'/><category term='checkbox'/><category term='меню'/><category term='Динамические ленты'/><category term='XML'/><category term='ленточный интерфейс'/><category term='Установка междустрочного интервала'/><category term='ribbon'/><category term='button'/><category term='onAction'/><category term='Работа с закладками в Word2007'/><title type='text'>Ribbon-интерфейс для Word 2007</title><subtitle type='html'>Разбираем по кусочкам новый «ленточный» интерфейс Word 2007. Здесь нет и не будет советов о том, как его сделать похожим на Word 2003. Только усовершенствования уже существующего.
Также приглашаю посетить &lt;a href="http://www.wordmacroses.blogspot.com"&gt;мой блог&lt;/a&gt;, посвященный работе с макросами в Word.
&lt;p&gt;&lt;b&gt;Напоминаю, что все коды программ, приведенных в блоге, вы используете на свой страх и риск. Не забывайте создавать резервные копии.&lt;/b&gt;&lt;/p&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-3812188558396413304</id><published>2010-06-28T23:52:00.000+03:00</published><updated>2010-06-28T23:53:15.630+03:00</updated><title type='text'>Элемент dropDown — выпадающий список</title><content type='html'>Как раз раздумывал над очередной темой, как её подсказала сама жизнь: &lt;a href="http://customoffice2007.blogspot.com/2010/01/blog-post.html?showComment=1277727496047#c6396031386314637987"&gt;просьба&lt;/a&gt; рассказать об элементе &lt;span class="InlineCode"&gt;comboBox&lt;/span&gt; и &lt;a href="http://wordexpert.ru/page/word-2007-dobavlyaem-svoyu-vkladku-i-svoi-komandy#comment-3796"&gt;сетования&lt;/a&gt; одного из посетителей &lt;a href="http://wordexpert.ru"&gt;WordExpert&lt;/a&gt; на неудобную работу с автотекстом. Постараюсь убить двух зайцев сразу.&lt;br /&gt;Итак, задача: сформировать список из элементов автотекста, содержащихся в шаблоне, на котором основан документ. При выборе элемента из списка, вставлять его в документ.&lt;br /&gt;Как всегда, начнём с XML-схемы. На ленту поместим группу "Автотекст" с выпадающим списком и кнопкой для обновления этого списка, если при работе с документом мы добавим элемент автотекста шаблон. В качестве списка я буду использовать не &lt;span class="InlineCode"&gt;comboBox&lt;/span&gt;, а &lt;span class="InlineCode"&gt;dropDown&lt;/span&gt;. Они абсолютно идентичны, но &lt;span class="InlineCode"&gt;comboBox&lt;/span&gt; позволяет принимать текст, введённый пользователем. Нам это не нужно, поэтому используем &lt;span class="InlineCode"&gt;dropDown&lt;/span&gt;.&lt;br /&gt;&lt;div class="spoiler" title="Выпадающий список элементов автотекста"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="hl kwb"&gt;version&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;encoding&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;standalone&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onLoad&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;RibbonLoading&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt; &lt;span class="hl kwa"&gt;&amp;lt;ribbon&lt;/span&gt; &lt;span class="hl kwb"&gt;startFromScratch&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;   &lt;span class="hl kwa"&gt;&amp;lt;tab&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;TabHome&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;group&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;grAutoText&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Автотекст&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;     &lt;span class="hl kwa"&gt;&amp;lt;dropDown&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ddAutoText&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;          &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ddAutoText_onAction&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;          &lt;span class="hl kwb"&gt;getItemLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ddAutoText_getItemLabel&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;          &lt;span class="hl kwb"&gt;getItemSupertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ddAutoText_getItemSupertip&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;          &lt;span class="hl kwb"&gt;getItemCount&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ddAutoText_getItemCount&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;          &lt;span class="hl kwb"&gt;getItemID&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ddAutoText_getItemID&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;          &lt;span class="hl kwb"&gt;getSelectedItemIndex&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ddAutoText_getSelectedItemIndex&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;     &lt;span class="hl kwa"&gt;&amp;lt;/dropDown&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;     &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;btnRefresh&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;         &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Обновить&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;         &lt;span class="hl kwb"&gt;imageMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;RecurrenceEdit&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;         &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;btnRefresh_onAction&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;/group&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;   &lt;span class="hl kwa"&gt;&amp;lt;/tab&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt; &lt;span class="hl kwa"&gt;&amp;lt;/ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/customUI&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Пояснения к атрибутам элемента dropDown.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="InlineCode"&gt;onAction&lt;/span&gt; — процедура, вызываемая при нажатии на пункте списка&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="InlineCode"&gt;getItemLabel&lt;/span&gt; — процедура для задания текста элемента списка&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="InlineCode"&gt;getItemSupertip&lt;/span&gt; — процедура для задания текста расширенной подсказки элемента списка&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="InlineCode"&gt;getItemCount&lt;/span&gt; — процедура для задания количества элементов списка&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="InlineCode"&gt;getItemID&lt;/span&gt; — процедура для задания идентификаторов элементво списка (необязательная)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="InlineCode"&gt;getSelectedItemIndex&lt;/span&gt; — процедура для выбора определённого элемента списка&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Кнопка совершенно обычная и никаких трудностей у вас не должна вызвать, если вы дошли до создания списка. Если же возникли трудности, то ознакомьтесь с &lt;a href="http://customoffice2007.blogspot.com/2010/06/button-checkbox.html"&gt;этой заметкой&lt;/a&gt;. Сохраняем шаблон и открываем его в Word, не забыв перед этим получить заготовку для кода VBA. Для этого в программе Ribbon XML Editor, которую я настоятельно рекомендую к использованию, предусмотрена специальная функция &lt;img style=";width: 23px; height: 22px;" src="http://2.bp.blogspot.com/_1wP7OmLw2YY/TCkDwtZQZDI/AAAAAAAACVA/7hKrrzqK40E/s320/btnVBA.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5487921756281791538" /&gt;: вы можете автоматически получить заготовки для всех динамических атрибутов, указанных в XML-схеме и сохранить их в виде модуля *.bas для последующего импорта в документ.&lt;br /&gt;Теперь код VBA. Открываем шаблон в Word, импортируем сохранённый модуль с процедурами ленты и доводим его до такого состояния:&lt;br /&gt;&lt;div class="spoiler" title="VBA-код для работы со списком автотекста"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Option Explicit&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; tmp &lt;span class="hl kwa"&gt;As&lt;/span&gt; Template&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; bb &lt;span class="hl kwa"&gt;As&lt;/span&gt; BuildingBlocks&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; MyRibbon &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonUI&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;&lt;span class="hl slc"&gt;' (компонент: customUI, атрибут: onLoad), 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;RibbonLoading&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;ribbon &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonUI&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Set&lt;/span&gt; tmp &lt;span class="hl sym"&gt;=&lt;/span&gt; ActiveDocument&lt;span class="hl sym"&gt;.&lt;/span&gt;AttachedTemplate&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Set&lt;/span&gt; bb &lt;span class="hl sym"&gt;=&lt;/span&gt; tmp&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;BuildingBlockTypes&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;wdTypeAutoText&lt;span class="hl sym"&gt;).&lt;/span&gt;&lt;span class="hl kwd"&gt;Categories&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Общие&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;).&lt;/span&gt;BuildingBlocks&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Set&lt;/span&gt; MyRibbon &lt;span class="hl sym"&gt;=&lt;/span&gt; ribbon&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;&lt;span class="hl slc"&gt;'ddAutoText (компонент: dropDown, атрибут: onAction), 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;ddAutoText_onAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; selectedId &lt;span class="hl kwa"&gt;As String&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; selectedIndex &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;  &lt;span class="hl kwd"&gt;bb&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;selectedIndex&lt;span class="hl sym"&gt;).&lt;/span&gt;Insert Where&lt;span class="hl sym"&gt;:=&lt;/span&gt;Selection&lt;span class="hl sym"&gt;.&lt;/span&gt;Range&lt;span class="hl sym"&gt;,&lt;/span&gt; RichText&lt;span class="hl sym"&gt;:=&lt;/span&gt;&lt;span class="hl kwa"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;&lt;span class="hl slc"&gt;'ddAutoText (компонент: dropDown, атрибут: getItemLabel), 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;ddAutoText_getItemLabel&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; index &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; label&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;  label &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;bb&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;index &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;).&lt;/span&gt;Name&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;&lt;span class="hl slc"&gt;'ddAutoText (компонент: dropDown, атрибут: getItemSupertip), 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;ddAutoText_getItemSupertip&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; index &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; superTip&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;  superTip &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;bb&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;index &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;).&lt;/span&gt;Value&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;&lt;span class="hl slc"&gt;'ddAutoText (компонент: dropDown, атрибут: getItemCount), 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;ddAutoText_getItemCount&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; count&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;&lt;span class="hl slc"&gt;'  Dim tmp As Template&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;  count &lt;span class="hl sym"&gt;=&lt;/span&gt; bb&lt;span class="hl sym"&gt;.&lt;/span&gt;count&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   34 &lt;/span&gt;&lt;span class="hl slc"&gt;'ddAutoText (компонент: dropDown, атрибут: getItemID), 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   35 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;ddAutoText_getItemID&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; index &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; id&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   36 &lt;/span&gt;  id &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;bb&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;index &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;).&lt;/span&gt;Name&lt;br /&gt;&lt;span class="hl line"&gt;   37 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   38 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   39 &lt;/span&gt;&lt;span class="hl slc"&gt;'ddAutoText (компонент: dropDown, атрибут: getSelectedItemIndex), 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   40 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;ddAutoText_getSelectedItemIndex&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; index&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   41 &lt;/span&gt;  index &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   42 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   43 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   44 &lt;/span&gt;&lt;span class="hl slc"&gt;'btnRefresh (компонент: button, атрибут: onAction), 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   45 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;btnRefresh_onAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   46 &lt;/span&gt;  MyRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;InvalidateControl &lt;span class="hl str"&gt;&amp;quot;ddAutoText&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   47 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В результате получим вот такой симпатичный список&lt;br /&gt;&lt;img style="width: 108px; height: 87px;" src="http://3.bp.blogspot.com/_1wP7OmLw2YY/TCkGFyU8ZqI/AAAAAAAACVI/5slB7TmUNmY/s320/dropDownAutotext.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5487924317406389922" /&gt;&lt;br /&gt;В конце, несколько замечаний. Как видно из кода, для выборки элементов автотекста используется только одна категория: "Общие". Если автотекст распределён по нескольким категориям, они не будут видны. Если нужно распределить по категориям, то либо создавать столько списков, сколько в шаблоне категорий автотекста, либо использовать не список, а динамическое меню. Естественно это потребует переделки кода.&lt;br /&gt;&lt;a href="http://viter-alex.narod.ru/Docs/RibbonX/dropdownAutotext.dotm"&gt;Пример шаблона&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-3812188558396413304?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/3812188558396413304/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=3812188558396413304&amp;isPopup=true' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/3812188558396413304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/3812188558396413304'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2010/06/dropdown.html' title='Элемент dropDown — выпадающий список'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1wP7OmLw2YY/TCkDwtZQZDI/AAAAAAAACVA/7hKrrzqK40E/s72-c/btnVBA.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-2345948453970742850</id><published>2010-06-05T12:59:00.001+03:00</published><updated>2010-06-28T23:34:35.386+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='checkbox'/><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='onAction'/><category scheme='http://www.blogger.com/atom/ns#' term='button'/><title type='text'>Динамические элементы управления button и checkbox</title><content type='html'>Как выстраивать стандартные элементы управления на ленте в желаемом порядке я уже &lt;a href="http://customoffice2007.blogspot.com/2010/02/blog-post.html"&gt;рассказывал&lt;/a&gt;.&lt;br /&gt;Как добавить на ленту собственные элементы управления и научить их откликаться на действия пользователя я буду рассказывать в серии заметок так, чтобы это не вызывало трудностей у новичков.&lt;br /&gt;Чтобы пользовательскую ленту научить откликаться на действия пользователя, мало просто задать расположение элементов управления. Необходимо, используя язык VBA, прописать действия, выполняемые тем или иным элементом управления, а также внутри XML-кода указать, что работа того или иного элемента управления контролируется извне.&lt;br /&gt;Начнём с двух, на мой взгляд самых простых элементов управления: кнопки (Button) и флажка(CheckBox).&lt;br /&gt;Разберём простенький пример. Поместим на ленту новую вкладку с именем «Тест», в ней создадим группу с тем же именем. В группе разместим флажок (checkbox) и кнопку. При изменении состояния флажка будет изменяться активность кнопки, а также текст флажка, отображающий количество нажатий на нём и его состояние. Кнопкой просто будем устанавливать или снимать флажок.&lt;br /&gt;XML-схема пользовательского интерфейса будет такой:&lt;br /&gt;&lt;div class="spoiler" title="XML-схема"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt;?xml version&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; standalone&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;?&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt;customUI xmlns&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;     onLoad&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;RibbonLoading&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt; &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt;ribbon startFromScratch&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt;tabs&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;   &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt;tab id&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Tab1&amp;quot;&lt;/span&gt; label&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Тест&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;    &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt;group id&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Tab1_gr1&amp;quot;&lt;/span&gt; label&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Тест&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;     &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt;checkBox id&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;chb1&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;          getLabel&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;getLabel&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;          getEnabled&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;getEnabled&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;          getPressed&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;getPressed&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;          onAction&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;onAction&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;     &lt;span class="hl sym"&gt;&amp;lt;&lt;/span&gt;button id&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;btn1&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;         getLabel&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;getLabel&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;         getEnabled&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;getEnabled&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;         onAction&lt;span class="hl sym"&gt;=&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;btnOnAction&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;    &lt;span class="hl sym"&gt;&amp;lt;/&lt;/span&gt;group&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;   &lt;span class="hl sym"&gt;&amp;lt;/&lt;/span&gt;tab&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;  &lt;span class="hl sym"&gt;&amp;lt;/&lt;/span&gt;tabs&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt; &lt;span class="hl sym"&gt;&amp;lt;/&lt;/span&gt;ribbon&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;&lt;span class="hl sym"&gt;&amp;lt;/&lt;/span&gt;customUI&lt;span class="hl sym"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Процесс создания XML-кода с помощью RXE уже &lt;a href="http://customoffice2007.blogspot.com/2010/02/blog-post.html"&gt;объяснялся&lt;/a&gt;, поэтому остановлюсь только на отличиях. XML-строки, соответствующие кнопке и флажку, добавляются кнопками &lt;img src="http://lh3.ggpht.com/_1wP7OmLw2YY/TALfpcTjowI/AAAAAAAACTc/TPLQvH3JtD0/button.jpg"/&gt; и &lt;img src="http://lh6.ggpht.com/_1wP7OmLw2YY/TALfpsyh2-I/AAAAAAAACTg/wCbKcgDxMI4/checkbox.jpg"/&gt;. Атрибуты можно писать вручную, а можно, и даже нужно, вводить, используя возможности RXE. В последней на сегодняшний день версии за ввод разнообразных атрибутов отвечают три выпадающих списка, расположенных над основным полем редактирования.&lt;br /&gt;Код отличается от приведённых раньше прежде всего тем, что в нём я не задаю явно текст, отображаемый на элементе управления. Вместо этого прописан набор атрибутов, начинающихся со слова &lt;span class="InlineCode"&gt;get&lt;/span&gt;. По порядку, что они означают:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="InlineCode"&gt;getLabel&lt;/span&gt; — атрибут, определяющий имя процедуры, которая задаёт текст элемента управления;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="InlineCode"&gt;getEnabled&lt;/span&gt; — атрибут, определяющий имя процедуры, устанавливающей активность элемента управления;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="InlineCode"&gt;getPressed&lt;/span&gt; — атрибут, определяющий имя процедуры, устанавливающей состояние элемента управления. Этот атрибут определён только для элементов управления, имеющих фиксированные состояния: checkbox и togglebutton.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Кроме этих атрибутов, имеется ещё один — &lt;span class="InlineCode"&gt;onAction&lt;/span&gt;, который определяет имя процедуры, выполняющейся при клике мышью на элементе управления. Также у элемента пользовательского интерфейса, определяемого тегом &lt;span class="InlineCode"&gt;customUI&lt;/span&gt;, я задал атрибут &lt;span class="InlineCode"&gt;onLoad&lt;/span&gt;, который, как наверное уже понятно, определяет процедуру, выполняющуюся при загрузке пользовательского интерфейса.&lt;br /&gt;Имена процедур, задаваемые атрибутам, могут быть совершенно произвольными, но, желательно, понятными разработчику :)&lt;br /&gt;Схему создали. Сохраняем документ и открываем в Word. При этом получим сообщение:&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center; width: 238px; height: 88px;" src="http://viter-alex.narod.ru/img/screenshots/scrsht2009-12-23_234520.png" border="0" alt="" /&gt;&lt;br /&gt;Оно вызвано тем, что в XML-схеме задано значение атрибута &lt;span class="InlineCode"&gt;щnLoad&lt;/span&gt;, а процедуры с соответствующим именем ещё нет. Поэтому следует прописать эту, а также остальные процедуры, указанные в XML-схеме.&lt;br /&gt;Открываем редактор VBA и вставляем в него такой код:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;﻿&lt;span class="hl kwa"&gt;Option Explicit&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;RibbonLoading&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;ribbon &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonUI&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getLabel&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; label&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getEnabled&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; enabled&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getPressed&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; pressed&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;onAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; pressed &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;btnOnAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Это "тела" процедур, имена которых были определены в XML-схеме. Наполним эти процедуры содержимым:&lt;br /&gt;&lt;div class="spoiler" title="Процедуры для пользовательского интерфейса"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Option Explicit&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl slc"&gt;'Глобальные переменые, необходимые для передачи состояния элементов управления _&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;между процедурами&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; chb1_pressed &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt; &lt;span class="hl slc"&gt;'Состояние флажка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; chb1_enabled &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt; &lt;span class="hl slc"&gt;'Активность флажка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; btn1_enabled &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt; &lt;span class="hl slc"&gt;'Активность кнопки&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; myRibbon &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonUI &lt;span class="hl slc"&gt;'Пользовательский интерфейс&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; PressCounter &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt; &lt;span class="hl slc"&gt;'Счётчик нажатий&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;RibbonLoading&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;ribbon &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonUI&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Загрузка ленты&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Задаём состояние флажка и кнопки&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;  chb1_enabled &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;  btn1_enabled &lt;span class="hl sym"&gt;=&lt;/span&gt; chb1_pressed&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Запоминаем наш интерфейс в переменную&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Set&lt;/span&gt; myRibbon &lt;span class="hl sym"&gt;=&lt;/span&gt; ribbon&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getEnabled&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; returnedVal&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Задаём активность элемента управления&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Определяем элемент управления, вызвавший процедуру&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Select Case&lt;/span&gt; control&lt;span class="hl sym"&gt;.&lt;/span&gt;ID&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;chb1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Устанавливаем активность флажка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;      returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; chb1_enabled&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;btn1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Устанавливаем активность кнопки&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;      returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; btn1_enabled&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End Select&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   34 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   35 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   36 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getPressed&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; returnedVal&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   37 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   38 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Задаём состояние элемента управления&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   39 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   40 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   41 &lt;/span&gt;  returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; chb1_pressed&lt;br /&gt;&lt;span class="hl line"&gt;   42 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   43 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   44 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getLabel&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; returnedVal&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   45 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   46 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Задаём текст элемента управления&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   47 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   48 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   49 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Определяем какой элемент управления вызвал эту процедуру&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   50 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Select Case&lt;/span&gt; control&lt;span class="hl sym"&gt;.&lt;/span&gt;ID&lt;br /&gt;&lt;span class="hl line"&gt;   51 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;chb1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Задаём текст флажка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   52 &lt;/span&gt;      returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;Нажат &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; PressCounter &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot; раз. Текущее состояние: &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;IIf&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;chb1_pressed&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;установлен&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;снят&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   53 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;btn1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Задаём текст кнопки&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   54 &lt;/span&gt;      returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;Кнопка изменения состояния флажка&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   55 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End Select&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   56 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   57 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   58 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;onAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; pressed &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   59 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   60 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Клик по флажку&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   61 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   62 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   63 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Запоминаем состояние флажка в глобальные переменные&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   64 &lt;/span&gt;  chb1_pressed &lt;span class="hl sym"&gt;=&lt;/span&gt; pressed&lt;br /&gt;&lt;span class="hl line"&gt;   65 &lt;/span&gt;  btn1_enabled &lt;span class="hl sym"&gt;=&lt;/span&gt; pressed&lt;br /&gt;&lt;span class="hl line"&gt;   66 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   67 &lt;/span&gt;  PressCounter &lt;span class="hl sym"&gt;=&lt;/span&gt; PressCounter &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt; &lt;span class="hl slc"&gt;'Инкремент счётчика&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   68 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   69 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Обновляем элементы управления&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   70 &lt;/span&gt;  myRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;InvalidateControl control&lt;span class="hl sym"&gt;.&lt;/span&gt;ID &lt;span class="hl slc"&gt;'флажок, вызвавший процедуру&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   71 &lt;/span&gt;  myRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;InvalidateControl &lt;span class="hl str"&gt;&amp;quot;btn1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'кнопка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   72 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   73 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   74 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;btnOnAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   75 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   76 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Нажатие на кнопку&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   77 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   78 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   79 &lt;/span&gt;  chb1_pressed &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;Not&lt;/span&gt; chb1_pressed &lt;span class="hl slc"&gt;'Изменяем значение переменной состояния флажка на противоположное&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   80 &lt;/span&gt;  PressCounter &lt;span class="hl sym"&gt;=&lt;/span&gt; PressCounter &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt; &lt;span class="hl slc"&gt;'Инкремент счётчика&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   81 &lt;/span&gt;  myRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;InvalidateControl &lt;span class="hl str"&gt;&amp;quot;chb1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Обновляем флажок&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   82 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Пугаться не нужно, разберём всё по кирпичикам.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;div class="spoiler" title="Кирпичик №1. Объявление глобальных переменных"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl slc"&gt;'Глобальные переменые, необходимые для передачи состояния элементов управления _&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;между процедурами&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; chb1_pressed &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt; &lt;span class="hl slc"&gt;'Состояние флажка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; chb1_enabled &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt; &lt;span class="hl slc"&gt;'Активность флажка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; btn1_enabled &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt; &lt;span class="hl slc"&gt;'Активность кнопки&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; myRibbon &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonUI &lt;span class="hl slc"&gt;'Пользовательский интерфейс&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; PressCounter &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt; &lt;span class="hl slc"&gt;'Счётчик нажатий&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В самом начале кода объявляем глобальные переменные, используемые для взаимодействия с элементами управления на ленте и с самой лентой. С помощью этих переменных мы сможем объяснить флажку, какой текст ему нужно иметь, в какое состояние его поставил кнопка и т.д.&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div class="spoiler" title="Кирпичик №2. Загрузка пользовательского интерфейса. RibbonLoading"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;RibbonLoading&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;ribbon &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonUI&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Загрузка ленты&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Задаём состояние флажка и кнопки&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;  chb1_enabled &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;  btn1_enabled &lt;span class="hl sym"&gt;=&lt;/span&gt; chb1_pressed&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Запоминаем наш интерфейс в переменную&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Set&lt;/span&gt; myRibbon &lt;span class="hl sym"&gt;=&lt;/span&gt; ribbon&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Эта процедура выполняется самой первой при загрузке пользовательского интерфейса. Как видно, она вызывается не пустой, а с параметром &lt;span class="InlineCode"&gt;ribbon&lt;/span&gt;, содержащим ссылку на загружаемый интерфейс. В этой процедуре я устанавливаю значение переменных, определяющих активность кнопки и флажка, и запоминаю в свою переменную &lt;span class="InlineCode"&gt;myRibbon&lt;/span&gt; ссылку на пользовательский интерфейс, чтобы обращаться к нему из других процедур.&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div class="spoiler" title="Кирпичик №3. Определение активности элемента управления. getEnabled"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getEnabled&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; returnedVal&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Задаём активность элемента управления&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Определяем элемент управления, вызвавший процедуру&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Select Case&lt;/span&gt; control&lt;span class="hl sym"&gt;.&lt;/span&gt;ID&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;chb1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Устанавливаем активность флажка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;      returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; chb1_enabled&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;btn1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Устанавливаем активность кнопки&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;      returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; btn1_enabled&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End Select&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   34 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   35 &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;После того, как лента загружена, начинается прорисовка элементов управления. Насколько я заметил, элементы управления прорисовываются сверху вниз и справа налево. При этом вызываются процедуры, заданные в атрибутах, начинающихся с &lt;span class="InlineCode"&gt;get&lt;/span&gt;.&lt;br /&gt;Эта процедура вызывается для каждого элемента управления, чтобы определить его активность. В качестве параметров процедуры передаётся сам элемент управления (&lt;span class="InlineCode"&gt;control&lt;/span&gt;) и ссылка на свойство, которое у этого элемента нужно изменить. В данное процедуре таким свойством является &lt;span class="InlineCode"&gt;Enabled&lt;/span&gt;, ссылка на которое передана в переменной &lt;span class="InlineCode"&gt;returnedVal&lt;/span&gt;.&lt;br /&gt;В данном случае внутри процедуры оператором &lt;span class="InlineCode"&gt;Select…Case&lt;/span&gt; определяется какой элемент управления её вызвал и в переменную, содержащую ссылку на свойство, записывается значение глобальной переменной, определённой выше. Поскольку в процедуре &lt;span class="InlineCode"&gt;RibbonLoading&lt;/span&gt; я уже задал значения переменным &lt;span class="InlineCode"&gt;chb1_enabled&lt;/span&gt; и &lt;span class="InlineCode"&gt;btn1_enabled&lt;/span&gt; (&lt;span class="InlineCode"&gt;true&lt;/span&gt; и &lt;span class="InlineCode"&gt;false&lt;/span&gt; соответственно), то флажок будет отображаться активным, а кнопка — неактивной.&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div class="spoiler" title="Кирпичик №4. Установка состояния флажка. getPressed"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;   36 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getPressed&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; returnedVal&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   37 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   38 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Задаём состояние элемента управления&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   39 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   40 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   41 &lt;/span&gt;  returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; chb1_pressed&lt;br /&gt;&lt;span class="hl line"&gt;   42 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   43 &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Это совсем просто, если вы «раскусили» предыдущий кирпичик. Состояние флажка определяется значением глобальной переменной &lt;span class="InlineCode"&gt;chb1_pressed&lt;/span&gt;. Задать значение этой переменной можно где угодно. Посколько до этого мы его ещё нигде не задавали, то оно равно &lt;span class="InlineCode"&gt;false&lt;/span&gt; и, соответственно, флажок будет снят. В эту процедуру передаются те же параметры, что и в предыдущую, только под &lt;span class="InlineCode"&gt;returnedVal&lt;/span&gt; уже подразумевается свойство &lt;span class="InlineCode"&gt;Checked&lt;/span&gt;. Эта процедура будет вызываться только для флажка.&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div class="spoiler" title="Кирпичик №5. Установка текста элемента управления. getLabel"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;   44 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getLabel&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; returnedVal&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   45 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   46 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Задаём текст элемента управления&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   47 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   48 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   49 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Определяем какой элемент управления вызвал эту процедуру&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   50 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Select Case&lt;/span&gt; control&lt;span class="hl sym"&gt;.&lt;/span&gt;ID&lt;br /&gt;&lt;span class="hl line"&gt;   51 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;chb1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Задаём текст флажка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   52 &lt;/span&gt;      returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;Нажат &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; PressCounter &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot; раз. Текущее состояние: &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;IIf&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;chb1_pressed&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;установлен&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;снят&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   53 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;btn1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Задаём текст кнопки&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   54 &lt;/span&gt;      returnedVal &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;Кнопка изменения состояния флажка&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   55 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End Select&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   56 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   57 &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Процедура, аналогичная &lt;span class="InlineCode"&gt;getEnabled&lt;/span&gt;, только &lt;span class="InlineCode"&gt;returnedVal&lt;/span&gt; определяет текст, отображаемый на элементе управления. В этой процедуре также используется глобальная переменная &lt;span class="InlineCode"&gt;chb1_pressed&lt;/span&gt;, чтобы правильно отображать информацию о состоянии флажка.&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div class="spoiler" title="Кирпичик №6. Клик на флажке. onAction"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;   58 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;onAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; pressed &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   59 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   60 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Клик по флажку&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   61 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   62 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   63 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Запоминаем состояние флажка в глобальные переменные&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   64 &lt;/span&gt;  chb1_pressed &lt;span class="hl sym"&gt;=&lt;/span&gt; pressed&lt;br /&gt;&lt;span class="hl line"&gt;   65 &lt;/span&gt;  btn1_enabled &lt;span class="hl sym"&gt;=&lt;/span&gt; pressed&lt;br /&gt;&lt;span class="hl line"&gt;   66 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   67 &lt;/span&gt;  PressCounter &lt;span class="hl sym"&gt;=&lt;/span&gt; PressCounter &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt; &lt;span class="hl slc"&gt;'Инкремент счётчика&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   68 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   69 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Обновляем элементы управления&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   70 &lt;/span&gt;  myRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;InvalidateControl control&lt;span class="hl sym"&gt;.&lt;/span&gt;ID &lt;span class="hl slc"&gt;'флажок, вызвавший процедуру&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   71 &lt;/span&gt;  myRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;InvalidateControl &lt;span class="hl str"&gt;&amp;quot;btn1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'кнопка&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   72 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   73 &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Эта процедура, вызывается, когда пользователь кликаем мышью по флажку. Первый параметр, который передаётся в этой процедуре, это всё тот же элемент управления, вызвавший её. Вторым параметром идёт состояние элемента управления &lt;span class="InlineCode"&gt;после&lt;/span&gt; клика на нём. Именно с помощью этого второго параметра мы передаём в глобальные переменные информацию о состоянии элемента управления.&lt;br /&gt;Важной частью этой процедуры являются строки, содержащие вызов метода &lt;span class="InlineCode"&gt;InvalidateControl&lt;/span&gt;. Вызов этого метода обновляет состояние указанного элемента управления. При этом обновлении повторно вызываются все процедуры, описанные в атрибутах, начинающихся с &lt;span class="InlineCode"&gt;get&lt;/span&gt;. В данном случае, обновляется флажок (с изменённым текстом) и кнопка (с изменённой активностью) &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div class="spoiler" title="Кирпичик №7. Нажатие на кнопку. btnOnAction"&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;   74 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;btnOnAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   75 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   76 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Нажатие на кнопку&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   77 &lt;/span&gt;  &lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   78 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   79 &lt;/span&gt;  chb1_pressed &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;Not&lt;/span&gt; chb1_pressed &lt;span class="hl slc"&gt;'Изменяем значение переменной состояния флажка на противоположное&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   80 &lt;/span&gt;  PressCounter &lt;span class="hl sym"&gt;=&lt;/span&gt; PressCounter &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt; &lt;span class="hl slc"&gt;'Инкремент счётчика&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   81 &lt;/span&gt;  myRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;InvalidateControl &lt;span class="hl str"&gt;&amp;quot;chb1&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'Обновляем флажок&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   82 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Эта процедура совершенно прозрачна и, думаю, не требует пояснений.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;После введения кода. Документ нужно сохранить и повторно открыть. Если всё было сделано правильно, то выглядеть это будет так:&lt;br /&gt;&lt;span style="display:block;text-align:center;"&gt;Сразу после открытия&lt;/span&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center; width: 238px; height: 88px;" src="http://viter-alex.narod.ru/img/screenshots/scrsht2009-12-24_010623.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;span style="display:block;text-align:center;"&gt;Первый клик по флажку, чтобы активировать кнопку.&lt;/span&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center; width: 238px; height: 88px;" src="http://viter-alex.narod.ru/img/screenshots/scrsht2009-12-24_010839.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;span style="display:block;text-align:center;margin: 0px 50px;"&gt;Нажатие на кнопку, чтобы изменить состояние флажка. Событие &lt;span class="InlineCode"&gt;onAction&lt;/span&gt; для флажка в этом случае не вызывается! Поэтому кнопка остаётся активной.&lt;/span&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center; width: 238px; height: 88px;" src="http://viter-alex.narod.ru/img/screenshots/scrsht2009-12-24_011029.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;a href="http://viter-alex.narod.ru/Docs/RibbonX/Primer_Raboty_S_Knopkoj_I_Flazhkom.docm"&gt;Готовый пример файла&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-2345948453970742850?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='application' href='http://viter-alex.narod.ru/Docs/Primer_Raboty_S_Knopkoj_I_Flazhkom.docm' length='0'/><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/2345948453970742850/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=2345948453970742850&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/2345948453970742850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/2345948453970742850'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2010/06/button-checkbox.html' title='Динамические элементы управления button и checkbox'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_1wP7OmLw2YY/TALfpcTjowI/AAAAAAAACTc/TPLQvH3JtD0/s72-c/button.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-7543501319157709482</id><published>2010-02-10T15:58:00.001+02:00</published><updated>2010-02-10T15:59:14.211+02:00</updated><title type='text'>Как изменить стандартные вкладки и группы на ленте</title><content type='html'>В ribbon-интерфейсе не предусмотрена возможность изменения стандартных групп и вкладок. Можно добавить свою группу на стандартную вкладку, убрать стандартную группу, убрать стандартную вкладку. Добавить свою свои элементы в стандартную группу нельзя. Нельзя также поменять местами расположение групп во вкладке. Вернее, поменять местами можно в Office 2010, но эти настройки сохраняются глобально для всего приложения, а не для отдельного документа или шаблона.&lt;br /&gt;Чтобы скрыть вкладку, нужно указать для неё &lt;span class="InlineCode"&gt;idMso&lt;/span&gt; и задать значение &lt;span class="InlineCode"&gt;false&lt;/span&gt; атрибуту &lt;span class="InlineCode"&gt;visible&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="hl kwb"&gt;version&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;encoding&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;standalone&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;    &lt;span class="hl com"&gt;&amp;lt;!--Скрытие вкладки &amp;quot;Рецензирование&amp;quot;--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;tab&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;TabReviewWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;visible&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;/tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/customUI&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Аналогично можно убрать стандартную группу из вкладки. Например, группу "Буфер обмена" с вкладки "Главная":&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="hl kwb"&gt;version&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;encoding&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;standalone&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;tab&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;TabHome&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;group&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;GroupClipboard&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;visible&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;/tab&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;/tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/customUI&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Также можно добавить свою группу на стандартную вкладку и задать её расположение атрибутом &lt;span class="InlineCode"&gt;insertBeforeMso&lt;/span&gt; или &lt;span class="InlineCode"&gt;insertAfterMso&lt;/span&gt;:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="hl kwb"&gt;version&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;encoding&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;standalone&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;tab&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;TabHome&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;        &lt;span class="hl com"&gt;&amp;lt;!-- Вставляем свою группу на вкладку &amp;quot;Главная&amp;quot; перед группой &amp;quot;Абзац&amp;quot; --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;group&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Границы&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;insertBeforeMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;GroupParagraph&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderNone&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BordersAll&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInside&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderOutside&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box2&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderBottomWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderTopWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderLeftWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderRightWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box3&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInsideHorizontal&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInsideVertical&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderDiagonalDown&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderDiagonalUp&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box4&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;vertical&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;TableDrawTable&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;TableEraser&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderColorPicker&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;dialogBoxLauncher&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BordersShadingDialogWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/dialogBoxLauncher&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   34 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;/group&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   35 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;/tab&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   36 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;/tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   37 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   38 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/customUI&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-7543501319157709482?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/7543501319157709482/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=7543501319157709482&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/7543501319157709482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/7543501319157709482'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2010/02/blog-post_10.html' title='Как изменить стандартные вкладки и группы на ленте'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-5271981348528893089</id><published>2010-02-09T13:48:00.000+02:00</published><updated>2010-02-09T13:51:36.116+02:00</updated><title type='text'>Создание вкладки с набором стандартных элементов управления</title><content type='html'>Если вас не по каким-либо причинам не устраивает стандартное расположение элементов управления на "ленте" Word 2007-2010, то эта заметка для вас. Может показаться, что для Word 2010 это не актуально, но, как вы убедитесь, это далеко не так.&lt;br /&gt;Элементы управления на ленту размещаются посредством редактирования XML-кода. Создайте пустой документ, сохраните его с расширением docx или docm, закройте его и откройте в программе &lt;a href="http://novikovmaxim.narod.ru/products/ribbon/ribbon.htm"&gt;Ribbon XML Editor (RXE)&lt;/a&gt;. После открытия вы увидите пустую вкладку с названием &lt;span style="font-weight:bold;"&gt;2007 (customUI.xml)&lt;/span&gt; (название вкладки можно увидеть в левом углу рабочей области).&lt;br /&gt;Попробуем создать вот такую вкладку со стандартными элементами управления границами таблиц:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1wP7OmLw2YY/S3BzhDSl1gI/AAAAAAAAB94/WcH90irId2w/s1600-h/lesson1_pic1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 288px; height: 119px;" src="http://4.bp.blogspot.com/_1wP7OmLw2YY/S3BzhDSl1gI/AAAAAAAAB94/WcH90irId2w/s320/lesson1_pic1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5435971761892349442" /&gt;&lt;/a&gt;&lt;br /&gt;Сразу замечу, что создать такую группу стандартными средствами Word 2010 невозможно (по крайней мере я не сумел). У меня получился такой результат:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1wP7OmLw2YY/S3B06q1lU1I/AAAAAAAAB-A/VBsENagYIOE/s1600-h/lesson1_pic2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 33px;" src="http://2.bp.blogspot.com/_1wP7OmLw2YY/S3B06q1lU1I/AAAAAAAAB-A/VBsENagYIOE/s320/lesson1_pic2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5435973301516456786" /&gt;&lt;/a&gt;&lt;br /&gt;Конечно, это не то, что нужно. Поэтому оставим стандартные средства редактирования ленты на совести их разработчиков и займёмся делом.&lt;br /&gt;Итак, перед нами в программе RXE пустое содержимое файла настройки интерфейса customUI.xml. Начинаем добавлять XML-код. RXE значительно упрощает этот процесс. Добавьте в рабочую область RXE такой код:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="hl kwb"&gt;version&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;encoding&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;standalone&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/customUI&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В первой строке расположена стандартная строка спецификации XML, определяющая версию XML и кодировку. Эта строка добавляется нажатием на кнопку &lt;img style="width: 24px; height: 24px;" src="http://2.bp.blogspot.com/_1wP7OmLw2YY/S3Eqe25rsDI/AAAAAAAAB_c/LEu3yXUR3Yo/s320/lesson1_pic3.png" alt=""id="BLOGGER_PHOTO_ID_5435981051717626226" /&gt;. Тег &lt;span class="InlineCode"&gt;customUI&lt;/span&gt;, начинающийся со второй строки и заканчивающийся на шестой, определяет пространство имён XML (XML namespace), в котором создаётся наш интерфейс. Этот тег добавляется кнопкой &lt;img style="width: 23px; height: 22px;" src="http://2.bp.blogspot.com/_1wP7OmLw2YY/S3Eq48MPVfI/AAAAAAAAB_k/f4nZiZhANFU/s320/lesson1_pic4.png" alt=""id="BLOGGER_PHOTO_ID_5435984730127747986" /&gt;. Для интерфейса приложений Office существует общее пространство имён внутри каждого приложения: "http://schemas.microsoft.com/office/2006/01/customui". Благодаря этому пространству имён наш интерфейс может встраиваться в интерфейс приложения. Если вы заметили, то при добавлении кода с помощью кнопок панели управления курсор всегда располагается так, чтобы сразу начать вводить следующую часть кода.&lt;br /&gt;Кнопкой &lt;img style="width: 36px; height: 20px;" src="http://4.bp.blogspot.com/_1wP7OmLw2YY/S3EkqdsTieI/AAAAAAAAB-g/i3aIp3lh__k/s320/lesson1_pic6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436166537156463074" /&gt; добавим тег &lt;span class="InlineCode"&gt;ribbon&lt;/span&gt;, указывающий, что мы формируем содержимое ленты. Для этого тега будет автоматически проставлен атрибут &lt;span class="InlineCode"&gt;startFromScratch=&amp;quot;false&amp;quot;&lt;/span&gt;, указывающий, что не нужно убирать стандартные элементы интерфейса: вкладки и панель быстрого доступа.&lt;br /&gt;Далее, добавляем вкладки кнопкой &lt;img style="width: 36px; height: 20px;" src="http://4.bp.blogspot.com/_1wP7OmLw2YY/S3Ehnihm6bI/AAAAAAAAB-Y/KZjMnIotc8U/s320/lesson1_pic5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436163188379281842" /&gt; (тег &lt;span class="InlineCode"&gt;tabs&lt;/span&gt;). При этом сразу добавятся теги &lt;span class="InlineCode"&gt;tab&lt;/span&gt; и &lt;span class="InlineCode"&gt;group&lt;/span&gt;, поскольку тег &lt;span class="InlineCode"&gt;tabs&lt;/span&gt; может иметь дочерним тегом только тег &lt;span class="InlineCode"&gt;tab&lt;/span&gt;; а тег &lt;span class="InlineCode"&gt;tab&lt;/span&gt;, в свою очередь, может имеет только один дочерний тег: &lt;span class="InlineCode"&gt;group&lt;/span&gt;. Если всё сделано правильно,то ваш код должен иметь такой вид:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="hl kwb"&gt;version&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;encoding&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;standalone&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;   &lt;span class="hl kwa"&gt;&amp;lt;tab&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabTable&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Таблицы&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;group&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabTable_gr1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Настройка границ&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;/group&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;   &lt;span class="hl kwa"&gt;&amp;lt;/tab&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/customUI&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Наконец-то, мы дошли до того момента, когда результат настройки интерфейса можно просмотреть. Сохраните документ в RXE и откройте его в Word, нажав кнопку &lt;img style="width: 23px; height: 20px;" src="http://2.bp.blogspot.com/_1wP7OmLw2YY/S3Eu5pM8t3I/AAAAAAAAB_w/fcoteFx8bQY/s320/lesson1_pic7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436177793060484978" /&gt;. Документ откроется в Word и после всех стандартных вкладок в конце появится ваша собственная вкладка "Таблицы" с пустой группой "Границы". Если вы ничего подобного не видите, значит где-то допущена ошибка и придётся всё сделать с самого начала.&lt;br /&gt;Теперь наполним нашу группу содержимым. При размещении элементов управления они располагаются в порядке следования снизу-вверх и слева-направо. Для изменения этого порядка, можно применять контейнеры &lt;span class="InlineCode"&gt;box&lt;/span&gt; и &lt;span class="InlineCode"&gt;buttonGroup&lt;/span&gt;. Откройте документ в RXE, поставьте курсор между начальным и конечным тегом &lt;span class="InlineCode"&gt;group&lt;/span&gt; и вставьте контейнер &lt;span class="InlineCode"&gt;box&lt;/span&gt; кнопкой &lt;img style="width: 23px; height: 20px;" src="http://2.bp.blogspot.com/_1wP7OmLw2YY/S3ExyfWB58I/AAAAAAAAB_4/20X-DspDmKU/s320/lesson1_pic8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436180968690018242" /&gt;. Для этого тега автоматически добавляются атрибуты &lt;span class="InlineCode"&gt;id&lt;/span&gt; и &lt;span class="InlineCode"&gt;boxStyle&lt;/span&gt;. Атрибут &lt;span class="InlineCode"&gt;boxStyle&lt;/span&gt; определяет размещение дочерних элементов внутри контейнера и может иметь два значения: &lt;span class="InlineCode"&gt;vertical&lt;/span&gt; и &lt;span class="InlineCode"&gt;horizontal&lt;/span&gt;. Разместим в группе первые четыре стандартных кнопки: "Отключить границы", "Все границы", "Внутренние границы" и "Внешние границы":&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="hl kwb"&gt;version&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;encoding&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;standalone&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt; &lt;span class="hl kwa"&gt;&amp;lt;ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;   &lt;span class="hl kwa"&gt;&amp;lt;tab&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabTable&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Таблицы&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;group&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Границы&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;     &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderNone&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BordersAll&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInside&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderOutside&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;     &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;/group&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;   &lt;span class="hl kwa"&gt;&amp;lt;/tab&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt; &lt;span class="hl kwa"&gt;&amp;lt;/ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/customUI&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Внутри контейнера &lt;span class="InlineCode"&gt;box&lt;/span&gt; я разместил четыре соответствующих стандартных кнопки с помощью тега &lt;span class="InlineCode"&gt;control&lt;/span&gt;, который можно добавить кнопкой &lt;img style="width: 23px; height: 20px;" src="http://1.bp.blogspot.com/_1wP7OmLw2YY/S3FJjfOkNUI/AAAAAAAACAY/Z2sOae7Cbsk/s320/lesson1_pic12.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436207099239740738" /&gt;. Этот тег как раз и предназначен для добавления стандартных элементов управления. В атрибуте &lt;span class="InlineCode"&gt;idMso&lt;/span&gt; указывается стандартный идентификатор элемента управления. Список всех стандартных идентификаторов для приложений Office 2007 можно скачать &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4329D9E9-4D11-46A5-898D-23E4F331E9AE&amp;displaylang=en"&gt;отсюда&lt;/a&gt;. Атрибут &lt;span class="InlineCode"&gt;showLabel&lt;/span&gt; используется для отображения или скрытия текста элемента управления.&lt;br /&gt;Открыв этот документ в Word, мы увидим наши четыре стандартных кнопки расположенных в одну строку:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1wP7OmLw2YY/S3E9S7lPrNI/AAAAAAAACAA/FL61_y17eYU/s1600-h/lesson1_pic9.png"&gt;&lt;img style="display:block; margin:0px auto 5px; text-align:center;cursor:pointer; cursor:hand;width: 96px; height: 85px;" src="http://2.bp.blogspot.com/_1wP7OmLw2YY/S3E9S7lPrNI/AAAAAAAACAA/FL61_y17eYU/s320/lesson1_pic9.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436193620653747410" /&gt;&lt;/a&gt;&lt;br /&gt;Понажимав на кнопки вы можете убедиться, что они работают совершенно также, как и на стандартных вкладках.&lt;br /&gt;Аналогичным образом добавим ещё две строки по четыре кнопки в каждой:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="hl kwb"&gt;version&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;encoding&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;standalone&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;tab&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabTable&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Таблицы&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;group&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Границы&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderNone&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BordersAll&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInside&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderOutside&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box2&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderBottomWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderTopWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderLeftWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderRightWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box3&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInsideHorizontal&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInsideVertical&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderDiagonalDown&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderDiagonalUp&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;/group&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;/tab&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;/tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/customUI&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1wP7OmLw2YY/S3FAAhvn_ZI/AAAAAAAACAI/8L7C1-HbXsc/s1600-h/lesson1_pic10.png"&gt;&lt;img style="display:block; margin:0px auto 5px; text-align:center;cursor:pointer; cursor:hand;width: 96px; height: 85px;" src="http://1.bp.blogspot.com/_1wP7OmLw2YY/S3FAAhvn_ZI/AAAAAAAACAI/8L7C1-HbXsc/s320/lesson1_pic10.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436196603015200146" /&gt;&lt;/a&gt;&lt;br /&gt;Осталось добавить три кнопки, расположенные вертикально по правому краю группы, и маленький квадратик в правом нижнем углу группы, служащий для вызова диалогового окна "Границы и заливка". Три кнопки нужно также поместить в контейнер &lt;span class="InlineCode"&gt;box&lt;/span&gt;, только для атрибута &lt;span class="InlineCode"&gt;boxStyle&lt;/span&gt; нужно указать значение &lt;span class="InlineCode"&gt;"vertical"&lt;/span&gt;.&lt;br /&gt;Маленький квадратик, служащий для вызова диалогового окна, добавляется тегом &lt;span class="InlineCode"&gt;dialogBoxLauncher&lt;/span&gt; (кнопка &lt;img style="width: 23px; height: 20px;" src="http://3.bp.blogspot.com/_1wP7OmLw2YY/S3FK37xguTI/AAAAAAAACAg/SHgkh-3x3Ps/s320/lesson1_pic13.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436208550011517234" /&gt;), имеющим атрибут &lt;span class="InlineCode"&gt;idMso&lt;/span&gt; для указания идентификатора  диалогового окна.&lt;br /&gt;Результирующий код будет выглядеть так:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="hl kwb"&gt;version&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;encoding&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;standalone&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;yes&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;tab&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabTable&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Таблицы&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;group&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Границы&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderNone&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BordersAll&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInside&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderOutside&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box2&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderBottomWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderTopWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderLeftWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderRightWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box3&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;horizontal&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInsideHorizontal&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderInsideVertical&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderDiagonalDown&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderDiagonalUp&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;box&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabMain_gr1_box4&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;boxStyle&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;vertical&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;TableDrawTable&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;TableEraser&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BorderColorPicker&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/box&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;dialogBoxLauncher&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;            &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BordersShadingDialogWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;          &lt;span class="hl kwa"&gt;&amp;lt;/dialogBoxLauncher&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;/group&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   34 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;/tab&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   35 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;/tabs&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   36 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/ribbon&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   37 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/customUI&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;А группа будет иметь такой вид:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1wP7OmLw2YY/S3FFVJQVs2I/AAAAAAAACAQ/4bPszTq5sJg/s1600-h/lesson1_pic11.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 130px; height: 85px;" src="http://1.bp.blogspot.com/_1wP7OmLw2YY/S3FFVJQVs2I/AAAAAAAACAQ/4bPszTq5sJg/s320/lesson1_pic11.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5436202454776918882" /&gt;&lt;/a&gt;&lt;br /&gt;Т.е. наша группа приобрела законченный вид. Единственным её отличием от желаемого вида в начале поста, является то, что вкладка расположена в самом конце, а не перед вкладкой "Главная". Это можно изменить, добавив атрибут &lt;span class="InlineCode"&gt;insertBeforeMso&lt;/span&gt;, задав ему значение &lt;span class="InlineCode"&gt;"TabHome"&lt;/span&gt;. С учётом этих изменений тег &lt;span class="InlineCode"&gt;tab&lt;/span&gt; будет иметь такой вид:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;      &lt;span class="hl kwa"&gt;&amp;lt;tab&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;rxTabTable&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Таблицы&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;insertBeforeMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;TabHome&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;На этом, пожалуй, всё.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-5271981348528893089?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/5271981348528893089/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=5271981348528893089&amp;isPopup=true' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/5271981348528893089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/5271981348528893089'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2010/02/blog-post.html' title='Создание вкладки с набором стандартных элементов управления'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1wP7OmLw2YY/S3BzhDSl1gI/AAAAAAAAB94/WcH90irId2w/s72-c/lesson1_pic1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-2636194766143796730</id><published>2010-01-13T14:45:00.001+02:00</published><updated>2010-01-13T14:49:14.597+02:00</updated><title type='text'>Вставка картинок в документ из выбранной папки (исправления)</title><content type='html'>После тестирования этого предыдущего шаблона выяснилось, что логика работы флажков для вставки названия не совсем понятна. Учитывая это, я внёс изменения. Теперь группа выглядит так:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1wP7OmLw2YY/S02_KDHNqrI/AAAAAAAABnw/4bF1Sk_wUKo/s1600-h/group.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 79px;" src="http://1.bp.blogspot.com/_1wP7OmLw2YY/S02_KDHNqrI/AAAAAAAABnw/4bF1Sk_wUKo/s320/group.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5426203305406474930" /&gt;&lt;/a&gt;&lt;br /&gt;Если установить флажок «Вставлять название», то к вставляемому рисунку будет добавляться название, как обычно. Если установить флажок «Имя файла в названии», то в название будет добавляться имя файла. Если установить флажок «Не нумеровать», то постоянная часть и номер из названия будут удалены.&lt;br /&gt;Кроме этих изменений, ускорена загрузка изображений в галерею и состояние элементов управления теперь запоминается.&lt;br /&gt;Скачать шаблон можно &lt;a href="http://viter-alex.narod.ru/Docs/RibbonX/ImageGallery_v1_1.dotm"&gt;отсюда&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-2636194766143796730?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/2636194766143796730/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=2636194766143796730&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/2636194766143796730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/2636194766143796730'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2010/01/blog-post_13.html' title='Вставка картинок в документ из выбранной папки (исправления)'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1wP7OmLw2YY/S02_KDHNqrI/AAAAAAAABnw/4bF1Sk_wUKo/s72-c/group.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-1173833279430623927</id><published>2010-01-11T14:45:00.001+02:00</published><updated>2010-01-11T15:03:28.842+02:00</updated><title type='text'>Обновление редактора Ribbon XML Editor</title><content type='html'>Рад сообщить, что &lt;a href="http://novikovmaxim.narod.ru/"&gt;Новиков Максим&lt;/a&gt; не забросил работу над своим редактором ленточного интерфейса, а совершенствует его и дальше.&lt;br /&gt;В последней версии 2.2 реализован механизм генерирования процедур обратного вызова для динамических аттрибутов, открытие редактора из командной строки, настройка подсветки синтаксиса, улучшенные списки вставки статических и динамических атрибутов, проверка целостности xml-структуры, открытие редактируемого файла в соответствующем приложении офиса, много мелких доработок.&lt;br /&gt;Сейчас Максим работает над третьей версией редактора, в которой будет реализована полная поддержка интерфейса для офис 2010, улучшенная навигация по структуре документа, проверка правильности вложения атрибутов.&lt;br /&gt;По мере сил я помогаю Максиму в решении возникающих задач.&lt;br /&gt;По-прежнему последнюю версию редактора можно скачать &lt;a href="http://novikovmaxim.narod.ru/products/ribbon/ribbon.htm"&gt;с этой страницы&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-1173833279430623927?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/1173833279430623927/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=1173833279430623927&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/1173833279430623927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/1173833279430623927'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2010/01/ribbon-xml-editor.html' title='Обновление редактора Ribbon XML Editor'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-6248791425007034716</id><published>2010-01-11T12:49:00.000+02:00</published><updated>2010-01-11T14:43:36.988+02:00</updated><title type='text'>Вставка картинок в документ из выбранной папки</title><content type='html'>Я разработал шаблон, упрощающий процедуру вставки в документ изображений из указанной папки. При загрузке шаблона появляется дополнительная группа на вкладке «Вставка»&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1wP7OmLw2YY/S0sD5zgCdvI/AAAAAAAABnc/l0msZQKA-kQ/s1600-h/group.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 77px;" src="http://3.bp.blogspot.com/_1wP7OmLw2YY/S0sD5zgCdvI/AAAAAAAABnc/l0msZQKA-kQ/s320/group.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5425434467709908722" /&gt;&lt;/a&gt;&lt;br /&gt;Возможности:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Выбор папки, из которой нужно часто вставлять изображения.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Просмотр эскизов изображений в галерее.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Обрабатываются (пока) только изображения форматов: "png", "jpg", "jpeg", "bmp", "gif".&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Всплывающая подсказка к каждому изображению содержит имя файла, размеры изображения и разрешение по горизонтали и по вертикали.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Вставка изображений в заданном режиме: в текст или с обтеканием.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Автоматическая вставка названия к изображению с нумерацией или без.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Автоматическая вставка имени файла в название к изображению.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;В раскрытом виде галерея может выглядеть так:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1wP7OmLw2YY/S0sGhjHEpqI/AAAAAAAABnk/GRNh-Gxk8Bg/s1600-h/gallery.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 262px;" src="http://4.bp.blogspot.com/_1wP7OmLw2YY/S0sGhjHEpqI/AAAAAAAABnk/GRNh-Gxk8Bg/s320/gallery.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5425437349528250018" /&gt;&lt;/a&gt;&lt;br /&gt;Галерея имеет фиксированное количество столбцов (5), количество строк зависит от количества изображений в выбранной папке. &lt;br /&gt;Скачать шаблон можно &lt;a href="http://viter-alex.narod.ru/Docs/RibbonX/ImageGallery.dotm"&gt;отсюда&lt;/a&gt;&lt;br /&gt;С точки зрения работы с лентой, этот шаблон интересен несколькими моментами. &lt;span style="font-weight:bold;"&gt;Во-первых&lt;/span&gt;, в нём реализована загрузка на ленту не только изображений bmp, но и других форматов.&lt;br /&gt;Это стало возможным благодаря использованию функций GDI+. За основу взяты примеры для книги &lt;span style="font-weight:bold;"&gt;RibbonX: Customizing the Office 2007 Ribbon&lt;/span&gt;, которые можно скачать &lt;a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470191112,descCd-DOWNLOAD.html"&gt;отсюда&lt;/a&gt;&lt;br /&gt;Дело в том, что для отображения на ленте Office понимает только один формат изображения IPictureDisp. Получить этот формат изображения из файла можно функцией  &lt;span class="InlineCode"&gt;LoadPicture&lt;/span&gt;. Но она может загружать только изображения bmp. В шаблоне используется похожая функция &lt;span class="InlineCode"&gt;LoadImage&lt;/span&gt;, описанная в модуле GDIPlusAPI. Код модуля выглядит так:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Модуль GDIPlusAPI&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Attribute&lt;/span&gt; VB_Name &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;GDIPlusAPI&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;Option Private Module&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl kwa"&gt;Option Explicit&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdiplusStartup &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;token &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; inputbuf &lt;span class="hl kwa"&gt;As&lt;/span&gt; GdiplusStartupInput&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;Optional ByVal&lt;/span&gt; outputbuf &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipCreateBitmapFromFile &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; filename &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; bitmap &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipCreateHBITMAPFromBitmap &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; bitmap &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; hbmReturn &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; background &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipDisposeImage &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; image &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdiplusShutdown &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; token &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; OleCreatePictureIndirect &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;olepro32.dll&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;PicDesc &lt;span class="hl kwa"&gt;As&lt;/span&gt; PICTDESC&lt;span class="hl sym"&gt;,&lt;/span&gt; RefIID &lt;span class="hl kwa"&gt;As&lt;/span&gt; GUID&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; fPictureOwnsHandle &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; IPic &lt;span class="hl kwa"&gt;As&lt;/span&gt; IPicture&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipGetImageDimension &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; image &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; Width &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Single&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; Height &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Single&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipGetImageWidth &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; image &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; Width &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipGetImageHeight &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; image &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; Height &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipGetImageHorizontalResolution &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; image &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; resolution &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Single&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipGetImageVerticalResolution &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; image &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; resolution &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Single&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipGetImageThumbnail &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; image &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; thumbWidth &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; thumbHeight &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; thumbImage &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;                        &lt;span class="hl kwa"&gt;Optional ByVal&lt;/span&gt; callback &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;Optional ByVal&lt;/span&gt; callbackData &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Declare Function&lt;/span&gt; GdipLoadImageFromFile &lt;span class="hl kwa"&gt;Lib&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;gdiplus&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; filename &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;String&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; image &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public&lt;/span&gt; &lt;span class="hl kwb"&gt;Enum&lt;/span&gt; GpStatus&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;  OK &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;  GenericError &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;  InvalidParameter &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;  OutOfMemory &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;  ObjectBusy &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;4&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;  InsufficientBuffer &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;5&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;  NotImplemented &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;6&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;  Win32Error &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;  WrongState &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;8&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;  Aborted &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;9&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;  FileNotFound &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;  ValueOverflow &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;11&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;  AccessDenied &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;12&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   34 &lt;/span&gt;  UnknownImageFormat &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;13&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   35 &lt;/span&gt;  FontFamilyNotFound &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;14&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   36 &lt;/span&gt;  FontStyleNotFound &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;15&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   37 &lt;/span&gt;  NotTrueTypeFont &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;16&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   38 &lt;/span&gt;  UnsupportedGdiplusVersion &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;17&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   39 &lt;/span&gt;  GdiplusNotInitialized &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;18&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   40 &lt;/span&gt;  PropertyNotFound &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;19&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   41 &lt;/span&gt;  PropertyNotSupported &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;20&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   42 &lt;/span&gt;&lt;span class="hl kwa"&gt;End&lt;/span&gt; &lt;span class="hl kwb"&gt;Enum&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   43 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   44 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Type&lt;/span&gt; GUID&lt;br /&gt;&lt;span class="hl line"&gt;   45 &lt;/span&gt;  Data1 &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   46 &lt;/span&gt;  Data2 &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   47 &lt;/span&gt;  Data3 &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   48 &lt;/span&gt;  &lt;span class="hl kwd"&gt;Data4&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;0&lt;/span&gt; &lt;span class="hl kwa"&gt;To&lt;/span&gt; &lt;span class="hl num"&gt;7&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Byte&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   49 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Type&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   50 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   51 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Type&lt;/span&gt; PICTDESC&lt;br /&gt;&lt;span class="hl line"&gt;   52 &lt;/span&gt;  Size &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   53 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Type As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   54 &lt;/span&gt;  hPic &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   55 &lt;/span&gt;  hPal &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   56 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Type&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   57 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   58 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Type&lt;/span&gt; GdiplusStartupInput&lt;br /&gt;&lt;span class="hl line"&gt;   59 &lt;/span&gt;  GdiplusVersion &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   60 &lt;/span&gt;  DebugEventCallback &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   61 &lt;/span&gt;  SuppressBackgroundThread &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   62 &lt;/span&gt;  SuppressExternalCodecs &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   63 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Type&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   64 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   65 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   66 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Function&lt;/span&gt; &lt;span class="hl kwd"&gt;LoadImage&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; strFName &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;String&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; IPicture&lt;br /&gt;&lt;span class="hl line"&gt;   67 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; uGdiInput &lt;span class="hl kwa"&gt;As&lt;/span&gt; GdiplusStartupInput&lt;br /&gt;&lt;span class="hl line"&gt;   68 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; hGdiPlus &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   69 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; hGdiImage &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   70 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; hBitmap &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   71 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; imgThumb &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   72 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; imgHeight &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Single&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; imgWidth &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Single&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   73 &lt;/span&gt;  uGdiInput&lt;span class="hl sym"&gt;.&lt;/span&gt;GdiplusVersion &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   74 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   75 &lt;/span&gt;  &lt;span class="hl slc"&gt;'Запускаем GDI+&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   76 &lt;/span&gt;  &lt;span class="hl kwa"&gt;If&lt;/span&gt; &lt;span class="hl kwd"&gt;GdiplusStartup&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;hGdiPlus&lt;span class="hl sym"&gt;,&lt;/span&gt; uGdiInput&lt;span class="hl sym"&gt;) =&lt;/span&gt; OK &lt;span class="hl kwa"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   77 &lt;/span&gt;    &lt;span class="hl slc"&gt;'Создаём изображение в памяти&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   78 &lt;/span&gt;    &lt;span class="hl kwa"&gt;If&lt;/span&gt; &lt;span class="hl kwd"&gt;GdipCreateBitmapFromFile&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwd"&gt;StrPtr&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;strFName&lt;span class="hl sym"&gt;),&lt;/span&gt; hGdiImage&lt;span class="hl sym"&gt;) =&lt;/span&gt; OK &lt;span class="hl kwa"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   79 &lt;/span&gt;      &lt;span class="hl slc"&gt;'Получаем размеры изображения&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   80 &lt;/span&gt;      &lt;span class="hl kwa"&gt;Call&lt;/span&gt; &lt;span class="hl kwd"&gt;GdipGetImageDimension&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;hGdiImage&lt;span class="hl sym"&gt;,&lt;/span&gt; imgWidth&lt;span class="hl sym"&gt;,&lt;/span&gt; imgHeight&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   81 &lt;/span&gt;      &lt;span class="hl slc"&gt;'Делаем из изображения уменьшенное&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   82 &lt;/span&gt;      &lt;span class="hl kwa"&gt;Call&lt;/span&gt; &lt;span class="hl kwd"&gt;GdipGetImageThumbnail&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;hGdiImage&lt;span class="hl sym"&gt;,&lt;/span&gt; ItemWidth&lt;span class="hl sym"&gt;,&lt;/span&gt; ItemWidth &lt;span class="hl sym"&gt;*&lt;/span&gt; imgHeight &lt;span class="hl sym"&gt;/&lt;/span&gt; imgWidth&lt;span class="hl sym"&gt;,&lt;/span&gt; imgThumb&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   83 &lt;/span&gt;      &lt;span class="hl slc"&gt;'Указатель на изображение&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   84 &lt;/span&gt;      &lt;span class="hl kwa"&gt;Call&lt;/span&gt; &lt;span class="hl kwd"&gt;GdipCreateHBITMAPFromBitmap&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;imgThumb&lt;span class="hl sym"&gt;,&lt;/span&gt; hBitmap&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   85 &lt;/span&gt;      &lt;span class="hl slc"&gt;'Конвертируем изображение в IPicture&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   86 &lt;/span&gt;      &lt;span class="hl kwa"&gt;Set&lt;/span&gt; LoadImage &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;ConvertToIPicture&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;hBitmap&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   87 &lt;/span&gt;      GdipDisposeImage hGdiImage&lt;br /&gt;&lt;span class="hl line"&gt;   88 &lt;/span&gt;    &lt;span class="hl kwa"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   89 &lt;/span&gt;    GdiplusShutdown hGdiPlus&lt;br /&gt;&lt;span class="hl line"&gt;   90 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Else&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   91 &lt;/span&gt;    MsgBox &lt;span class="hl str"&gt;&amp;quot;Ошибка при загрузке GDI+!&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; vbCritical&lt;br /&gt;&lt;span class="hl line"&gt;   92 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   93 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   94 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   95 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   96 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Function&lt;/span&gt; &lt;span class="hl kwd"&gt;ConvertToIPicture&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; hPic &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Long&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; IPicture&lt;br /&gt;&lt;span class="hl line"&gt;   97 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   98 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; uPicInfo &lt;span class="hl kwa"&gt;As&lt;/span&gt; PICTDESC&lt;br /&gt;&lt;span class="hl line"&gt;   99 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; IID_IDispatch &lt;span class="hl kwa"&gt;As&lt;/span&gt; GUID&lt;br /&gt;&lt;span class="hl line"&gt;  100 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; IPic &lt;span class="hl kwa"&gt;As&lt;/span&gt; IPicture&lt;br /&gt;&lt;span class="hl line"&gt;  101 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  102 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Const&lt;/span&gt; PICTYPE_BITMAP &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  103 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  104 &lt;/span&gt;  &lt;span class="hl kwa"&gt;With&lt;/span&gt; IID_IDispatch&lt;br /&gt;&lt;span class="hl line"&gt;  105 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;Data1 &lt;span class="hl sym"&gt;= &amp;amp;&lt;/span&gt;H7BF80980&lt;br /&gt;&lt;span class="hl line"&gt;  106 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;Data2 &lt;span class="hl sym"&gt;= &amp;amp;&lt;/span&gt;HBF32&lt;br /&gt;&lt;span class="hl line"&gt;  107 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;Data3 &lt;span class="hl sym"&gt;= &amp;amp;&lt;/span&gt;H101A&lt;br /&gt;&lt;span class="hl line"&gt;  108 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Data4&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;0&lt;/span&gt;&lt;span class="hl sym"&gt;) = &amp;amp;&lt;/span&gt;H8B&lt;br /&gt;&lt;span class="hl line"&gt;  109 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Data4&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;1&lt;/span&gt;&lt;span class="hl sym"&gt;) = &amp;amp;&lt;/span&gt;HBB&lt;br /&gt;&lt;span class="hl line"&gt;  110 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Data4&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;2&lt;/span&gt;&lt;span class="hl sym"&gt;) = &amp;amp;&lt;/span&gt;H0&lt;br /&gt;&lt;span class="hl line"&gt;  111 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Data4&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;3&lt;/span&gt;&lt;span class="hl sym"&gt;) = &amp;amp;&lt;/span&gt;HAA&lt;br /&gt;&lt;span class="hl line"&gt;  112 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Data4&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;4&lt;/span&gt;&lt;span class="hl sym"&gt;) = &amp;amp;&lt;/span&gt;H0&lt;br /&gt;&lt;span class="hl line"&gt;  113 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Data4&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;5&lt;/span&gt;&lt;span class="hl sym"&gt;) = &amp;amp;&lt;/span&gt;H30&lt;br /&gt;&lt;span class="hl line"&gt;  114 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Data4&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;6&lt;/span&gt;&lt;span class="hl sym"&gt;) = &amp;amp;&lt;/span&gt;HC&lt;br /&gt;&lt;span class="hl line"&gt;  115 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Data4&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;7&lt;/span&gt;&lt;span class="hl sym"&gt;) = &amp;amp;&lt;/span&gt;HAB&lt;br /&gt;&lt;span class="hl line"&gt;  116 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End With&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  117 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  118 &lt;/span&gt;  &lt;span class="hl kwa"&gt;With&lt;/span&gt; uPicInfo&lt;br /&gt;&lt;span class="hl line"&gt;  119 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;Size &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;Len&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;uPicInfo&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  120 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwa"&gt;Type&lt;/span&gt; &lt;span class="hl sym"&gt;=&lt;/span&gt; PICTYPE_BITMAP&lt;br /&gt;&lt;span class="hl line"&gt;  121 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;hPic &lt;span class="hl sym"&gt;=&lt;/span&gt; hPic&lt;br /&gt;&lt;span class="hl line"&gt;  122 &lt;/span&gt;    &lt;span class="hl sym"&gt;.&lt;/span&gt;hPal &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  123 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End With&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  124 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  125 &lt;/span&gt;  OleCreatePictureIndirect uPicInfo&lt;span class="hl sym"&gt;,&lt;/span&gt; IID_IDispatch&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;True&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; IPic&lt;br /&gt;&lt;span class="hl line"&gt;  126 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  127 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Set&lt;/span&gt; ConvertToIPicture &lt;span class="hl sym"&gt;=&lt;/span&gt; IPic&lt;br /&gt;&lt;span class="hl line"&gt;  128 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  129 &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Загрузка изображений происходит в модуле RibbonCallbacks в процедуре &lt;span class="InlineCode"&gt;getItemImage&lt;/span&gt;, которая, в свою очередь, определена в XML-схеме для галереи.&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Загрузка изображений для элементов галереи&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;   68 &lt;/span&gt;&lt;span class="hl slc"&gt;'galleryImagesFromFolder (компонент: gallery, атрибут: getItemImage)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   69 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getItemImage&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; index &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; image&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   70 &lt;/span&gt;  &lt;span class="hl kwa"&gt;If&lt;/span&gt; ImagesCount &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt; &lt;span class="hl kwa"&gt;Then Exit Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   71 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Set&lt;/span&gt; image &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;LoadImage&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwd"&gt;arImagePaths&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;index&lt;span class="hl sym"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   72 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В этой процедуре arImagePaths — массив с путями к файлам изображений, index — номер элемента в галерее.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Во-вторых&lt;/span&gt;, на примере данного шаблона можно понять как работает механизм изменения состояния одних элементов ленты в зависимости от состояния других. Начнём с XML-схемы трёх флажков, расположенных в правой части группы, которые определяют правила вставки названия к вставляемому изображению.&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;XML-код флажков&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;   51 &lt;/span&gt;     &lt;span class="hl com"&gt;&amp;lt;!-- Разделитель группы --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   52 &lt;/span&gt;     &lt;span class="hl kwa"&gt;&amp;lt;separator&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;sep1&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   53 &lt;/span&gt;     &lt;span class="hl kwa"&gt;&amp;lt;checkBox&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;chbInsertImageWithCaption&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   54 &lt;/span&gt;          &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Вставлять название&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   55 &lt;/span&gt;          &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Установите этот флажок, чтобы автоматически вставлять подпись к вставляемому рисунку.&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   56 &lt;/span&gt;          &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;chb_onAction&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   57 &lt;/span&gt;     &lt;span class="hl kwa"&gt;&amp;lt;checkBox&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;chbUsePathInCaption&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   58 &lt;/span&gt;          &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Имя файла в названии&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   59 &lt;/span&gt;          &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Установите этот флажок, чтобы подпись к вставляемому рисунку содержала имя файла рисунка.&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   60 &lt;/span&gt;          &lt;span class="hl kwb"&gt;getEnabled&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;getEnabled&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   61 &lt;/span&gt;          &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;chb_onAction&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   62 &lt;/span&gt;     &lt;span class="hl kwa"&gt;&amp;lt;checkBox&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;chbNumberImage&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   63 &lt;/span&gt;          &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Нумеровать изображение&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   64 &lt;/span&gt;          &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Установите этот флажок, чтобы автоматически нумеровать вставляемое изображение.&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   65 &lt;/span&gt;          &lt;span class="hl kwb"&gt;getPressed&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;chb_getPressed&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   66 &lt;/span&gt;          &lt;span class="hl kwb"&gt;getEnabled&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;getEnabled&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   67 &lt;/span&gt;          &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;chb_onAction&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;У всех трёх флажков определён один общий динамический атрибут &lt;span class="InlineCode"&gt;onAction&lt;/span&gt;, определяющий процедуру, которая выполняется при клике на соответствующем флажке. Двум последним флажкам задан атрибут &lt;span class="InlineCode"&gt;getEnabled&lt;/span&gt;, определяющий процедуру, изменяющую активность этих флажков. Активность этих флажков меняется в зависимости от состояния первого флажка.&lt;br /&gt;И, наконец, у третьего флажка задан атрибут &lt;span class="InlineCode"&gt;getPressed&lt;/span&gt;, определяющий процедуру, изменяющую состояние флажка.&lt;br /&gt;Теперь посмотрим, как это реализовано в VBA:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Процедура getEnabled&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;&lt;span class="hl slc"&gt;'galleryImagesFromFolder (компонент: gallery, атрибут: getEnabled)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;&lt;span class="hl slc"&gt;'chbUsePathInCaption (компонент: checkBox, атрибут: getEnabled)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;&lt;span class="hl slc"&gt;'chbUsePathInCaption (компонент: checkBox, атрибут: onAction)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;&lt;span class="hl slc"&gt;'chbNumberImage (компонент: checkBox, атрибут: getEnabled)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;getEnabled&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; enabled&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   34 &lt;/span&gt;   &lt;span class="hl kwa"&gt;Select Case&lt;/span&gt; control&lt;span class="hl sym"&gt;.&lt;/span&gt;ID&lt;br /&gt;&lt;span class="hl line"&gt;   35 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;chbUsePathInCaption&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   36 &lt;/span&gt;      enabled &lt;span class="hl sym"&gt;=&lt;/span&gt; chbInsertImageWithCaptionChecked&lt;br /&gt;&lt;span class="hl line"&gt;   37 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;chbNumberImage&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   38 &lt;/span&gt;      enabled &lt;span class="hl sym"&gt;=&lt;/span&gt; chbInsertImageWithCaptionChecked&lt;br /&gt;&lt;span class="hl line"&gt;   39 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case Else&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   40 &lt;/span&gt;      enabled &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;CBool&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;ImagesCount&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   41 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End Select&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   42 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Эта процедура при помощи селективного оператора определяет состояние какого элемента ленты нужно установить и присваивает ему значение соответствующей глобальной переменной. &lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Процедура chb_onAction&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;  110 &lt;/span&gt;&lt;span class="hl slc"&gt;'chbInsertImageWithCaption (компонент: checkBox, атрибут: onAction)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  111 &lt;/span&gt;&lt;span class="hl slc"&gt;'chbUsePathInCaption (компонент: checkBox, атрибут: onAction)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  112 &lt;/span&gt;&lt;span class="hl slc"&gt;'chbNumberImage (компонент: checkBox, атрибут: getPressed)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  113 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;chb_onAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; pressed &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  114 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Select Case&lt;/span&gt; control&lt;span class="hl sym"&gt;.&lt;/span&gt;ID&lt;br /&gt;&lt;span class="hl line"&gt;  115 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;chbUsePathInCaption&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  116 &lt;/span&gt;      chbUsePathInCaptionChecked &lt;span class="hl sym"&gt;=&lt;/span&gt; pressed&lt;br /&gt;&lt;span class="hl line"&gt;  117 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;chbNumberImage&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  118 &lt;/span&gt;      chbNumberImageChecked &lt;span class="hl sym"&gt;=&lt;/span&gt; pressed&lt;br /&gt;&lt;span class="hl line"&gt;  119 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Case&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;chbInsertImageWithCaption&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  120 &lt;/span&gt;      chbInsertImageWithCaptionChecked &lt;span class="hl sym"&gt;=&lt;/span&gt; pressed&lt;br /&gt;&lt;span class="hl line"&gt;  121 &lt;/span&gt;      &lt;span class="hl kwa"&gt;If Not&lt;/span&gt; myRibbon Is &lt;span class="hl kwa"&gt;Nothing Then&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  122 &lt;/span&gt;        myRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;InvalidateControl &lt;span class="hl str"&gt;&amp;quot;chbUsePathInCaption&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  123 &lt;/span&gt;        myRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;InvalidateControl &lt;span class="hl str"&gt;&amp;quot;chbNumberImage&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  124 &lt;/span&gt;      &lt;span class="hl kwa"&gt;Else&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  125 &lt;/span&gt;        MsgBox &lt;span class="hl str"&gt;&amp;quot;Связь с пользовательским интерфейсом customUI утеряна. Попробуйте переоткрыть документ, или переподключить шаблон&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; vbInformation &lt;span class="hl sym"&gt;+&lt;/span&gt; vbOKOnly&lt;br /&gt;&lt;span class="hl line"&gt;  126 &lt;/span&gt;      &lt;span class="hl kwa"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  127 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End Select&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  128 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В этой процедуре, также с помощью селективного оператора, определяется флажок, на котором щёлкнул пользователь и состояние этого флажка, переданное параметром &lt;span class="InlineCode"&gt;pressed&lt;/span&gt;, записывается в соответствующую глобальную переменную. Кроме того, если сработал первый флажок, то обновляется состояние остальных двух.&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Процедура chb_getPressed&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;  140 &lt;/span&gt;&lt;span class="hl slc"&gt;'chbNumberImage (компонент: checkBox, атрибут: getPressed)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  141 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;chb_getPressed&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; returnValue&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;  142 &lt;/span&gt;  returnValue &lt;span class="hl sym"&gt;=&lt;/span&gt; chbNumberImageChecked&lt;br /&gt;&lt;span class="hl line"&gt;  143 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Здесь всё просто: состояние флажка, на которое ссылается переменная &lt;span class="InlineCode"&gt;returnedValue&lt;/span&gt;, устанавливается в соответствии со значением глобальной переменной. Здесь не используется селективный оператор, поскольку эта процедура вызывается только для одного флажка.&lt;br /&gt;&lt;br /&gt;Замечания и пожелания приветствуются.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-6248791425007034716?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/6248791425007034716/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=6248791425007034716&amp;isPopup=true' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/6248791425007034716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/6248791425007034716'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2010/01/blog-post.html' title='Вставка картинок в документ из выбранной папки'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1wP7OmLw2YY/S0sD5zgCdvI/AAAAAAAABnc/l0msZQKA-kQ/s72-c/group.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-5853071075398540856</id><published>2009-06-14T12:18:00.001+03:00</published><updated>2010-09-20T12:33:06.979+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='меню'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>Динамическое меню (продолжение 3)</title><content type='html'>В &lt;a href="http://customoffice2007.blogspot.com/2008/12/blog-post_28.html"&gt;своей заметке&lt;/a&gt; я привел пример динамического меню для работы с закладками в документе. Как это обычно бывает, первый блин оказался комом. Меню, хотя и работало, не было избавлено от недостатков.&lt;br /&gt;При большом количестве закладок в документе в нем было трудно ориентироваться. Попал мне в руки документ, в котором было более 200 закладок. Меню сформировалось, но найти в нем нужную закладку было довольно сложно. Поэтому я решил доработать это меню, расширив его функциональность и сделав более удобным в эксплуатации.&lt;br /&gt;Что было сделано:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Добавлена возможность сортировки списка закладок по алфавиту или по положению в документе&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Добавлена кнопка включения/выключения отображения закладок. Спасибо за идею &lt;a href="http://wordexpert.ru/"&gt;Антону Кокину&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;После имени закладки добавляются первые 10 символов из текста закладки&lt;/li&gt;&lt;br /&gt;&lt;li&gt;На кнопке «Управление закладками» в скобках отображается количество закладок.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;В подсказке к каждой закладке в меню отображается полный её текст.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Выглядит меню так:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1wP7OmLw2YY/SjTHN5LlQ2I/AAAAAAAAA18/f1vye3B3HAA/s1600-h/DymMenuBM.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 220px; height: 320px;" src="http://3.bp.blogspot.com/_1wP7OmLw2YY/SjTHN5LlQ2I/AAAAAAAAA18/f1vye3B3HAA/s320/DymMenuBM.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5347117699097248610" /&gt;&lt;/a&gt;&lt;br /&gt;Скачать шаблон с примером можно &lt;a href="http://viter-alex.narod.ru/Docs/RibbonX/dmBookmarks.dotm"&gt;отсюда&lt;/a&gt;&lt;br /&gt;При совершенствовании меню самой неожиданной стала проблема с формированием текста пунктов меню и всплывающей подсказки. Дело в том, что если в тексте закладки есть символы, которые в языке XML рассматриваются как служебные, то это вызовет ошибку. К таким символам относятся: двойная кавычка «"», одинарная кавычка «'», знаки больше «&gt;» и меньше «&lt;», квадратные скобки «[]», двойное тире «--». Я решил эту проблему, написав функцию, которая заменяет все эти символы на их ASCII-код так, чтобы они могли правильно отображаться в меню. Вот код этой функции:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Замена литералов на сущности&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Function&lt;/span&gt; &lt;span class="hl kwd"&gt;GetRightXMLString&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwa"&gt;ByVal&lt;/span&gt; str &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;String&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl slc"&gt;'Замена в строке XML спецсимволов на их коды&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; &lt;span class="hl kwd"&gt;ar&lt;/span&gt;&lt;span class="hl sym"&gt;(),&lt;/span&gt; i&lt;span class="hl sym"&gt;%&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;  ar &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;Array&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;lt;&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;[&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;]&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;'&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; vbTab&lt;span class="hl sym"&gt;,&lt;/span&gt; vbCr&lt;span class="hl sym"&gt;,&lt;/span&gt; vbCrLf&lt;span class="hl sym"&gt;,&lt;/span&gt; vbLf&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;  &lt;span class="hl kwa"&gt;For&lt;/span&gt; i &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt; &lt;span class="hl kwa"&gt;To&lt;/span&gt; &lt;span class="hl kwd"&gt;UBound&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;ar&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;    str &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;Replace&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;str&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwd"&gt;ar&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;i&lt;span class="hl sym"&gt;),&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;amp;#&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;AscW&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwd"&gt;ar&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;i&lt;span class="hl sym"&gt;)) &amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;    str &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;Replace&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwd"&gt;Replace&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;str&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwd"&gt;ChrW&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;7&lt;/span&gt;&lt;span class="hl sym"&gt;),&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;),&lt;/span&gt; &lt;span class="hl kwd"&gt;ChrW&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl num"&gt;21&lt;/span&gt;&lt;span class="hl sym"&gt;),&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;  GetRightXMLString &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;CleanString&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;str&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-5853071075398540856?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/5853071075398540856/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=5853071075398540856&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/5853071075398540856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/5853071075398540856'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2009/06/3.html' title='Динамическое меню (продолжение 3)'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1wP7OmLw2YY/SjTHN5LlQ2I/AAAAAAAAA18/f1vye3B3HAA/s72-c/DymMenuBM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-5925629581298376512</id><published>2009-02-10T15:06:00.000+02:00</published><updated>2009-02-10T15:13:06.747+02:00</updated><title type='text'>Нет предела совершенству</title><content type='html'>Ниже приведенные коды для динамического меню довольно неплохо работают, если с ними правильно обращаться. К сожалению, обычный пользователь это редко делает. Он начинает жать на кнопки в совершенно непредсказуемом порядке.&lt;br /&gt;Проблемы с этими меню могут возникнуть, если их запускать, когда нет открытых документов, или текущий документ еще не был сохранен ни разу.&lt;br /&gt;Решается это, в принципе, дезактивированием этих пунктов меню, подобно стандартным. Но как правильно это делать я еще не разобрался. Некогда.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://casa-latina.ru/s/s/icon_megaschlafen.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 60px; height: 54px;" src="http://casa-latina.ru/s/s/icon_megaschlafen.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-5925629581298376512?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/5925629581298376512/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=5925629581298376512&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/5925629581298376512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/5925629581298376512'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2009/02/blog-post.html' title='Нет предела совершенству'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-8647457213687241944</id><published>2009-01-06T16:44:00.000+02:00</published><updated>2009-12-19T13:20:38.094+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='Динамическое меню'/><title type='text'>Динамическое меню (продолжение 2)</title><content type='html'>Теперь поговорим о динамическом меню для макросов. &lt;a href="http://wordmacroses.blogspot.com/2009/01/blog-post.html"&gt;Здесь&lt;/a&gt; я описал функции, которые помогают в составлении этого меню. Здесь подробнее об XML-начинке.&lt;br /&gt;Вот так выглядит результат:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1wP7OmLw2YY/SWNwQHUrpiI/AAAAAAAAAyI/yQzW2MHfoek/s1600-h/automacro.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 197px;" src="http://1.bp.blogspot.com/_1wP7OmLw2YY/SWNwQHUrpiI/AAAAAAAAAyI/yQzW2MHfoek/s400/automacro.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5288193809609106978" /&gt;&lt;/a&gt;&lt;br /&gt;В XML-схеме шаблона меню задано так:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Динамическое меню для макросов&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;dynamicMenu&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;DynMenuGetMacroAuto&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;  &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Авто Макросы&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwb"&gt;getContent&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;DynMenuGetMacroAuto_GetContent&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;  &lt;span class="hl kwb"&gt;screentip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Макросы, доступные для выполнения&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Динамическое меню, которое составляется автоматически.&amp;amp;#13;Если документ еще ни разу не сохранялся, то перед открытием меню документ нужно обязательно сохранить. Иначе это вызовет ошибку.&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;И наконец, само формирование меню (&lt;span style="font-family:monospace;"&gt;getContent&lt;/span&gt;)&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Формирование динамического меню с макросами&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;DynMenuGetMacroAuto_GetContent&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; content&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl slc"&gt;'Формирование динамического меню со всеми макросами, доступными для данного документа&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; sXML &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;String&lt;/span&gt; &lt;span class="hl slc"&gt;'строка, в которую записывается содержимое динамического меню&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; i&lt;span class="hl sym"&gt;,&lt;/span&gt; j&lt;span class="hl sym"&gt;,&lt;/span&gt; IDcounter &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt; &lt;span class="hl slc"&gt;'счетчики циклов и идентификаторов компонентов&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; asModulesNames&lt;span class="hl sym"&gt;,&lt;/span&gt; asFuncNames &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Variant&lt;/span&gt; &lt;span class="hl slc"&gt;'массивы для хранения имен функций и модулей&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;&lt;span class="hl slc"&gt;'Начало формирования динамического меню&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;  sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;lt;menu xmlns=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;&lt;span class="hl slc"&gt;'Кнопка «Обновить»&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;  sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot;&amp;lt;button id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;RefreshDynMenu&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;            &lt;span class="hl str"&gt;&amp;quot;label=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Обновить&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;            &lt;span class="hl str"&gt;&amp;quot;screentip=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Обновить содержимое этого меню&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;            &lt;span class="hl str"&gt;&amp;quot;supertip=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Нажмите для обновления содержимого меню. &amp;amp;#13;Это необходимо делать, &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;              &lt;span class="hl str"&gt;&amp;quot;если вы изменяете проект Visual Basic для данного документа. Или присоединяете &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;              &lt;span class="hl str"&gt;&amp;quot;новые шаблоны.&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;            &lt;span class="hl str"&gt;&amp;quot;onAction=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;RefreshDynMenu_OnAction&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;            &lt;span class="hl str"&gt;&amp;quot;imageMso=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;RecurrenceEdit&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot;&amp;lt;menuSeparator id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;MenuSep1&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;&lt;span class="hl slc"&gt;'----------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;&lt;span class="hl slc"&gt;'Формирование пунктов меню для каждого доступного шаблона с макросами&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;&lt;span class="hl slc"&gt;'----------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; oTemplate &lt;span class="hl kwa"&gt;As Object&lt;/span&gt; &lt;span class="hl slc"&gt;'объект для шаблона из которого будут читаться макросы&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; bLockedProjOpened &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Boolean&lt;/span&gt; &lt;span class="hl slc"&gt;'флаг для определения состояния шаблона: закрыт он или открыт для чтения&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;  &lt;span class="hl kwa"&gt;For Each&lt;/span&gt; oTemplate &lt;span class="hl kwa"&gt;In&lt;/span&gt; Application&lt;span class="hl sym"&gt;.&lt;/span&gt;templates&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;    bLockedProjOpened &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;    &lt;span class="hl kwa"&gt;If&lt;/span&gt; oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;VBProject&lt;span class="hl sym"&gt;.&lt;/span&gt;Protection &lt;span class="hl sym"&gt;=&lt;/span&gt; vbext_pp_locked &lt;span class="hl kwa"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;      &lt;span class="hl kwa"&gt;Set&lt;/span&gt; oTemplate &lt;span class="hl sym"&gt;=&lt;/span&gt; Application&lt;span class="hl sym"&gt;.&lt;/span&gt;Documents&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Open&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;FullName&lt;span class="hl sym"&gt;,&lt;/span&gt; ReadOnly&lt;span class="hl sym"&gt;:=&lt;/span&gt;&lt;span class="hl kwa"&gt;True&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;      bLockedProjOpened &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwa"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;    &lt;span class="hl kwa"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   34 &lt;/span&gt;&lt;span class="hl slc"&gt;'Записываем строку, начинающую меню для каждого шаблона.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   35 &lt;/span&gt;&lt;span class="hl slc"&gt;'Пробелы для идентификаторов заменяем на нижнее подчеркивание.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   36 &lt;/span&gt;    sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   37 &lt;/span&gt;            &lt;span class="hl str"&gt;&amp;quot;&amp;lt;menu id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;ID_&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;Replace&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;Name&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;_&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;) &amp;amp;&lt;/span&gt; IDcounter &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   38 &lt;/span&gt;              &lt;span class="hl str"&gt;&amp;quot;label=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Макросы из «&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;Name &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;»&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;gt; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   39 &lt;/span&gt;&lt;span class="hl slc"&gt;'Счетчик для идентификаторов&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   40 &lt;/span&gt;    IDcounter &lt;span class="hl sym"&gt;=&lt;/span&gt; IDcounter &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   41 &lt;/span&gt;&lt;span class="hl slc"&gt;'Попытка прочитать имена программных модулей из указанного шаблона&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   42 &lt;/span&gt;    &lt;span class="hl kwa"&gt;On Error Resume Next&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   43 &lt;/span&gt;    asModulesNames &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;fGetModulesNames&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;oTemplate&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl slc"&gt;'читаем программные модули из шаблона и записываем их в наш массив&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   44 &lt;/span&gt;&lt;span class="hl slc"&gt;'Если произошла ошибка при чтении модулей, то выводится сообщение и процедура прерывается.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   45 &lt;/span&gt;    &lt;span class="hl kwa"&gt;If&lt;/span&gt; Err&lt;span class="hl sym"&gt;.&lt;/span&gt;Number &lt;span class="hl sym"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt; &lt;span class="hl kwa"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   46 &lt;/span&gt;      MsgBox &lt;span class="hl str"&gt;&amp;quot;Не удалось прочитать список модулей из &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;Name&lt;span class="hl sym"&gt;,&lt;/span&gt; vbOKOnly&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;Ошибка при формировании меню&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   47 &lt;/span&gt;      Err&lt;span class="hl sym"&gt;.&lt;/span&gt;Clear&lt;br /&gt;&lt;span class="hl line"&gt;   48 &lt;/span&gt;      &lt;span class="hl kwa"&gt;Exit Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   49 &lt;/span&gt;    &lt;span class="hl kwa"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   50 &lt;/span&gt;    &lt;span class="hl kwa"&gt;For&lt;/span&gt; j &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt; &lt;span class="hl kwa"&gt;To&lt;/span&gt; &lt;span class="hl kwd"&gt;UBound&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;asModulesNames&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   51 &lt;/span&gt;&lt;span class="hl slc"&gt;'Разделитель меню для каждого программного модуля в проекте шаблона.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   52 &lt;/span&gt;      sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   53 &lt;/span&gt;              &lt;span class="hl str"&gt;&amp;quot;&amp;lt;menuSeparator id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;ID_&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;Replace&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;Name&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;_&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;) &amp;amp;&lt;/span&gt; IDcounter &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   54 &lt;/span&gt;                &lt;span class="hl str"&gt;&amp;quot;title=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;asModulesNames&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;j&lt;span class="hl sym"&gt;) &amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   55 &lt;/span&gt;      IDcounter &lt;span class="hl sym"&gt;=&lt;/span&gt; IDcounter &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   56 &lt;/span&gt;&lt;span class="hl slc"&gt;'Попытка прочитать имена функций из указанного шаблона указанного модуля.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   57 &lt;/span&gt;      &lt;span class="hl kwa"&gt;On Error Resume Next&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   58 &lt;/span&gt;      asFuncNames &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;fGetFuncNames&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;oTemplate&lt;span class="hl sym"&gt;,&lt;/span&gt; oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;VBProject&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;VBComponents&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwd"&gt;asModulesNames&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;j&lt;span class="hl sym"&gt;)))&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   59 &lt;/span&gt;&lt;span class="hl slc"&gt;'Если произошла ошибка при чтении имен функций, то выводится сообщение и процедура прерывается.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   60 &lt;/span&gt;      &lt;span class="hl kwa"&gt;If&lt;/span&gt; Err&lt;span class="hl sym"&gt;.&lt;/span&gt;Number &lt;span class="hl sym"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt; &lt;span class="hl kwa"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   61 &lt;/span&gt;        MsgBox &lt;span class="hl str"&gt;&amp;quot;Не удалось прочитать список функций из модуля &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;asModulesNames&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;j&lt;span class="hl sym"&gt;) &amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   62 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot; шаблона &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;Name&lt;span class="hl sym"&gt;,&lt;/span&gt; vbOKOnly&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;Ошибка при формировании меню&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   63 &lt;/span&gt;        Err&lt;span class="hl sym"&gt;.&lt;/span&gt;Clear&lt;br /&gt;&lt;span class="hl line"&gt;   64 &lt;/span&gt;        &lt;span class="hl kwa"&gt;Exit Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   65 &lt;/span&gt;      &lt;span class="hl kwa"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   66 &lt;/span&gt;      &lt;span class="hl kwa"&gt;For&lt;/span&gt; i &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt; &lt;span class="hl kwa"&gt;To&lt;/span&gt; &lt;span class="hl kwd"&gt;UBound&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;asFuncNames&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   67 &lt;/span&gt;&lt;span class="hl slc"&gt;'Создаем кнопку в меню, которая запускает соответствующий макрос. Путь к макросу записываем в свойство&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   68 &lt;/span&gt;&lt;span class="hl slc"&gt;'«tag». При вызове макроса «onAction» свойство «tag» передается в качестве аргумента. Свойство «tag»&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   69 &lt;/span&gt;&lt;span class="hl slc"&gt;'записываем в виде ‹имя_проекта›.‹имя_модуля›.‹имя_макроса›. Это позволяет запускать любые макросы из&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   70 &lt;/span&gt;&lt;span class="hl slc"&gt;'загруженных проектов.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   71 &lt;/span&gt;        sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   72 &lt;/span&gt;                &lt;span class="hl str"&gt;&amp;quot;&amp;lt;button id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;menubtn_&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;asModulesNames&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;j&lt;span class="hl sym"&gt;) &amp;amp;&lt;/span&gt; IDcounter &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   73 &lt;/span&gt;                  &lt;span class="hl str"&gt;&amp;quot;label=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;asFuncNames&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;i&lt;span class="hl sym"&gt;) &amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   74 &lt;/span&gt;                  &lt;span class="hl str"&gt;&amp;quot;tag=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;VBProject&lt;span class="hl sym"&gt;.&lt;/span&gt;Name &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;.&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;asModulesNames&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;j&lt;span class="hl sym"&gt;) &amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;.&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl kwd"&gt;asFuncNames&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;i&lt;span class="hl sym"&gt;) &amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   75 &lt;/span&gt;                  &lt;span class="hl str"&gt;&amp;quot;onAction=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   76 &lt;/span&gt;        IDcounter &lt;span class="hl sym"&gt;=&lt;/span&gt; IDcounter &lt;span class="hl sym"&gt;+&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   77 &lt;/span&gt;      &lt;span class="hl kwa"&gt;Next&lt;/span&gt; i&lt;br /&gt;&lt;span class="hl line"&gt;   78 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Next&lt;/span&gt; j&lt;br /&gt;&lt;span class="hl line"&gt;   79 &lt;/span&gt;&lt;span class="hl slc"&gt;'Заканчиваем формирование меню с макросами для данного шаблона&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   80 &lt;/span&gt;    sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;lt;/menu&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   81 &lt;/span&gt;&lt;span class="hl slc"&gt;'Проверяем открывался ли закрытый для просмотра документ. Если да, то закрываем его.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   82 &lt;/span&gt;    &lt;span class="hl kwa"&gt;If&lt;/span&gt; bLockedProjOpened &lt;span class="hl kwa"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   83 &lt;/span&gt;      oTemplate&lt;span class="hl sym"&gt;.&lt;/span&gt;Close&lt;br /&gt;&lt;span class="hl line"&gt;   84 &lt;/span&gt;    &lt;span class="hl kwa"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   85 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Next&lt;/span&gt; oTemplate&lt;br /&gt;&lt;span class="hl line"&gt;   86 &lt;/span&gt;&lt;span class="hl slc"&gt;'Добавляем стандартные кнопки управлением средой Visual Basic через разделитель&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   87 &lt;/span&gt;  sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   88 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;&amp;lt;menuSeparator id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;MenuSep2&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; title=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Visual Basic for Application&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   89 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;&amp;lt;control idMso=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;MacroPlay&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; showLabel=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   90 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;&amp;lt;control idMso=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;MacroRecordOrStop&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; showLabel=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   91 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;&amp;lt;control idMso=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;MacroRecorderPause&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; showLabel=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbTab &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   92 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;&amp;lt;control idMso=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;VisualBasic&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; showLabel=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   93 &lt;/span&gt;&lt;span class="hl slc"&gt;'Завершаем формирование меню&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   94 &lt;/span&gt;  content &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;lt;/menu&amp;gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   95 &lt;/span&gt;&lt;span class="hl slc"&gt;'Отладочные строки. Нужны для просмотра готового кода в редакторе XML. При нормальной работе эти строки&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   96 &lt;/span&gt;&lt;span class="hl slc"&gt;'нужно закомментировать.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   97 &lt;/span&gt;&lt;span class="hl slc"&gt;''''''''''''''''''''''''  Selection.InsertAfter content&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   98 &lt;/span&gt;&lt;span class="hl slc"&gt;''''''''''''''''''''''''  Selection.Cut&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Итак, что же происходит?&lt;br /&gt;Сначала добавляем кнопку «Обновить». Это, я полагаю, стандартный шаг для любого динамического меню, т.к. его всегда полезно лишний раз обновить.&lt;br /&gt;Затем вставляем разделитель и формируем вложенные меню для каждого шаблона, доступного для документа. Стоит отметить, что этот этап может вызывать некоторую задержку при формировании, т.к. макросы могут читаться из шаблонов, код которых недоступен для просмотра, но доступен для выполнения. Чтобы добраться до макросов такого закрытого шаблона, он временно открывается для чтения, из него читаются макросы, и он тут же закрывается.&lt;br /&gt;В каждом вложенном меню мы создаем разделители меню с названием модуля, а под этим разделителем — макросы из этого модуля.&lt;br /&gt;Полностью сформированный код динамического меню выглядит так (чтобы его получить нужно раскомментировать строки 97 и 98):&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Формирование динамического меню с макросами&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Сформированное динамическое меню&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;menu&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;RefreshDynMenu&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Обновить&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;screentip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Обновить содержимое этого меню&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Нажмите для обновления содержимого меню. &amp;amp;#13;Это необходимо делать, если вы изменяете проект Visual Basic для данного документа. Или присоединяете новые шаблоны.&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;RefreshDynMenu_OnAction&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;imageMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;RecurrenceEdit&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;menuSeparator&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MenuSep1&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;menu&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ID_Шаблон_с_панелью_инструментов_и_макросами.dotm0&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Макросы из «Шаблон с панелью инструментов и макросами.dotm»&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;menuSeparator&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ID_Шаблон_с_панелью_инструментов_и_макросами.dotm1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;title&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Macroses&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_Macroses2&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ФормулаСНумерацией&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ПроектСМакросамиИЛентой.Macroses.ФормулаСНумерацией&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_Macroses3&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ВзятьВКавычки&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ПроектСМакросамиИЛентой.Macroses.ВзятьВКавычки&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_Macroses4&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;УвеличитьШрифт&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ПроектСМакросамиИЛентой.Macroses.УвеличитьШрифт&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_Macroses5&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;УменьшитьШрифт&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ПроектСМакросамиИЛентой.Macroses.УменьшитьШрифт&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_Macroses6&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;СделатьРимскойЦифрой&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ПроектСМакросамиИЛентой.Macroses.СделатьРимскойЦифрой&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/menu&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;menu&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ID_Normal.dotm7&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Макросы из «Normal.dotm»&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;menuSeparator&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ID_Normal.dotm8&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;title&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ThisDocument&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_ThisDocument9&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Формула_с_нумерацией&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Normal.ThisDocument.Формула_с_нумерацией&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_ThisDocument10&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ВзятьВКавычки&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Normal.ThisDocument.ВзятьВКавычки&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_ThisDocument11&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;УвеличитьШрифт&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Normal.ThisDocument.УвеличитьШрифт&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_ThisDocument12&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;УменьшитьШрифт&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Normal.ThisDocument.УменьшитьШрифт&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;menuSeparator&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ID_Normal.dotm13&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;title&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;NewMacros&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_NewMacros14&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;BigCardText&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Normal.NewMacros.BigCardText&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_NewMacros15&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;EndOfWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Normal.NewMacros.EndOfWord&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_NewMacros16&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;СделатьРимскойЦифрой&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Normal.NewMacros.СделатьРимскойЦифрой&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;menubtn_NewMacros17&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Макрос2&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Normal.NewMacros.Макрос2&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;/menu&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;menuSeparator&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MenuSep2&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;title&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Visual Basic for Application&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MacroPlay&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MacroRecordOrStop&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MacroRecorderPause&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;  &lt;span class="hl kwa"&gt;&amp;lt;control&lt;/span&gt; &lt;span class="hl kwb"&gt;idMso&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;VisualBasic&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;showLabel&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/menu&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Как видно из этого кода в свойстве &lt;span style="font-family:monospace;"&gt;tag&lt;/span&gt; прописан полный путь к макросу, что позволяет его запускать из любого открытого документа.&lt;br /&gt;Естественно, что для вашего случая код динамического меню будет другой.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-8647457213687241944?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/8647457213687241944/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=8647457213687241944&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/8647457213687241944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/8647457213687241944'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2009/01/2.html' title='Динамическое меню (продолжение 2)'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1wP7OmLw2YY/SWNwQHUrpiI/AAAAAAAAAyI/yQzW2MHfoek/s72-c/automacro.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-2149092108715689598</id><published>2009-01-05T08:41:00.000+02:00</published><updated>2009-12-19T12:49:31.305+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ленточный интерфейс'/><category scheme='http://www.blogger.com/atom/ns#' term='Работа с закладками в Word2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Динамическое меню'/><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Динамические ленты'/><title type='text'>Динамическое меню (продолжение)</title><content type='html'>Оказывается, что формировать ленту на лету не только можно, но и чрезвычайно полезно.&lt;br /&gt;Я решил, &lt;a href="http://wordexpert.ru/2008/10/24/shablon-dlya-raboty-s-zakladkami/"&gt;по примеру Антона Кокина&lt;/a&gt; сделать свое меню для работы с закладками, только в версии для Word2007. &lt;br /&gt;Сказано — сделано.&lt;br /&gt;Вот что получилось:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1wP7OmLw2YY/SWGtkdWE7oI/AAAAAAAAAx4/BLL1ezJL_RE/s1600-h/bookmarks.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 113px;" src="http://1.bp.blogspot.com/_1wP7OmLw2YY/SWGtkdWE7oI/AAAAAAAAAx4/BLL1ezJL_RE/s400/bookmarks.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5287698279373794946" /&gt;&lt;/a&gt;&lt;br /&gt;При добавлении закладки в документ меню обновляется и имя закладки появляется внизу списка. Щелчок на имени приводит к переходу на эту закладку. В подменю «Управление закладками» появляются пункты, позволяющие удалить нужную закладку. Например, вот так:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1wP7OmLw2YY/SWG7wxJ_fjI/AAAAAAAAAyA/2m2Ndbf2JL0/s1600-h/bookmarks1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 109px;" src="http://2.bp.blogspot.com/_1wP7OmLw2YY/SWG7wxJ_fjI/AAAAAAAAAyA/2m2Ndbf2JL0/s400/bookmarks1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5287713884013035058" /&gt;&lt;/a&gt;&lt;br /&gt;Для того, чтобы все это работало, следует выполнить несколько простых шагов:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Создать динамическое меню в схеме документа при помощи RibbonXMLEditor&lt;/li&gt;&lt;br /&gt;&lt;li&gt;В этом меню определить макрос, который отвечает за наполнение меню содержимым&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Написать сам макрос в документе, или, что намного лучше, в шаблоне.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Следует заметить, что динамическое меню получает свое содержимое при первом щелчке на нем, что может вызывать определенные задержки при большом количестве закладок или на слабой машине. А я-то думал, почему так долго открываются стандартные меню-галереи? А ведь они обновляются при открытии.&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;XML-код для динамического меню закладок&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;dynamicMenu&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;DynMenu&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;  &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Закладки&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwb"&gt;getContent&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;DynMenuGetBookmarks_GetContent&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В шаблоне, где мы делаем все манипуляции с ленточным интерфейсом, пишем код макроса &lt;span style="font-family:monospace;"&gt;DynMenuGetBookmarks_GetContent&lt;/span&gt;. Код этот довольно сложен для восприятия с первого раза, но, разобравшись, он не представляет трудностей.&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Макрос формирования меню с закладками документа&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;DynMenuGetBookmarks_GetContent&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; content&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl slc"&gt;'Формирование меню с закладками документа&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; sXML &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Dim&lt;/span&gt; i &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;Integer&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Set&lt;/span&gt; bm &lt;span class="hl sym"&gt;=&lt;/span&gt; ActiveDocument&lt;span class="hl sym"&gt;.&lt;/span&gt;Bookmarks&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;  sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;lt;menu xmlns=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;&lt;span class="hl slc"&gt;'Кнопка «Обновить»&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;  sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;    &lt;span class="hl str"&gt;&amp;quot;&amp;lt;button id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;RefreshDynMenu&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;    &lt;span class="hl str"&gt;&amp;quot;label=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Обновить&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;    &lt;span class="hl str"&gt;&amp;quot;onAction=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;RefreshDynMenu_OnAction&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;    &lt;span class="hl str"&gt;&amp;quot;imageMso=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;RecurrenceEdit&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;&lt;span class="hl slc"&gt;'Меню «Управление закладками»&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;  sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;    &lt;span class="hl str"&gt;&amp;quot;&amp;lt;menu id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;ManageBookMarks&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot;label=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Управление закладками&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot;imageMso=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;ControlToolboxOutlook&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;      &lt;span class="hl str"&gt;&amp;quot;&amp;lt;button id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;menu_AddBookmark&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;            &lt;span class="hl str"&gt;&amp;quot;label=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Добавить закладку&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;            &lt;span class="hl str"&gt;&amp;quot;onAction=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;menu_AddBookmark_onAction&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;      &lt;span class="hl str"&gt;&amp;quot;&amp;lt;menuSeparator id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;MenuSep2&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; title=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Удалить закладки&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;&lt;span class="hl slc"&gt;'Кнопки Удаления закладок&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;&lt;span class="hl slc"&gt;'------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;      &lt;span class="hl kwa"&gt;For&lt;/span&gt; i &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt; &lt;span class="hl kwa"&gt;To&lt;/span&gt; bm&lt;span class="hl sym"&gt;.&lt;/span&gt;count&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;        sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot;&amp;lt;button id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;delbm&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; i &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   34 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot;label=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; bm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Item&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;i&lt;span class="hl sym"&gt;).&lt;/span&gt;Name &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   35 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot;onAction=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;delbm_onAction&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   36 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot;imageMso=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;OutlineCollapse&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   37 &lt;/span&gt;          &lt;span class="hl str"&gt;&amp;quot;tag=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; bm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Item&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;i&lt;span class="hl sym"&gt;).&lt;/span&gt;Name &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; /&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   38 &lt;/span&gt;      &lt;span class="hl kwa"&gt;Next&lt;/span&gt; i&lt;br /&gt;&lt;span class="hl line"&gt;   39 &lt;/span&gt;      sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;lt;/menu&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   40 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   41 &lt;/span&gt;&lt;span class="hl slc"&gt;'Разделитель&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   42 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   43 &lt;/span&gt;  sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   44 &lt;/span&gt;    &lt;span class="hl str"&gt;&amp;quot;&amp;lt;menuSeparator id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;MenuSep1&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; title=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;Существующие в документе закладки&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   45 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   46 &lt;/span&gt;&lt;span class="hl slc"&gt;'Кнопки с именами закладок&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   47 &lt;/span&gt;&lt;span class="hl slc"&gt;'--------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   48 &lt;/span&gt;  &lt;span class="hl kwa"&gt;If&lt;/span&gt; bm&lt;span class="hl sym"&gt;.&lt;/span&gt;count &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt; &lt;span class="hl kwa"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   49 &lt;/span&gt;    sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   50 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;&amp;lt;button id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;NoBookmarks&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   51 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;label=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;В документе нет ни одной закладки&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot; /&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   52 &lt;/span&gt;  &lt;span class="hl kwa"&gt;Else&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   53 &lt;/span&gt;    &lt;span class="hl kwa"&gt;For&lt;/span&gt; i &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl num"&gt;1&lt;/span&gt; &lt;span class="hl kwa"&gt;To&lt;/span&gt; bm&lt;span class="hl sym"&gt;.&lt;/span&gt;count&lt;br /&gt;&lt;span class="hl line"&gt;   54 &lt;/span&gt;      sXML &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   55 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;&amp;lt;button id=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;bm&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; i &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   56 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;label=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; bm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Item&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;i&lt;span class="hl sym"&gt;).&lt;/span&gt;Name &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   57 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;imageMso=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;FrontPageToggleBookmark&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   58 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;onAction=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;GoToBookmark&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; _&lt;br /&gt;&lt;span class="hl line"&gt;   59 &lt;/span&gt;        &lt;span class="hl str"&gt;&amp;quot;tag=&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; bm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Item&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;i&lt;span class="hl sym"&gt;).&lt;/span&gt;Name &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="hl str"&gt;&amp;quot; /&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; vbCr&lt;br /&gt;&lt;span class="hl line"&gt;   60 &lt;/span&gt;    &lt;span class="hl kwa"&gt;Next&lt;/span&gt; i&lt;br /&gt;&lt;span class="hl line"&gt;   61 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   62 &lt;/span&gt;  content &lt;span class="hl sym"&gt;=&lt;/span&gt; sXML &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;&amp;lt;/menu&amp;gt;&amp;quot;&lt;/span&gt; &lt;span class="hl slc"&gt;'возвращаем значение в компонент&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   63 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Как видно первой создается кнопка «Обновить» и для нее назначается макрос &lt;span style="font-family:monospace;"&gt;RefreshDynMenu_OnAction&lt;/span&gt;, который обновляет меню.&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Обновление меню&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;RefreshDynMenu_OnAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl slc"&gt;'Обновление динамического меню&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  CustomRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;Invalidate&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;При удалении закладки меню обновляется автоматически, но не без нашего участия. Чтобы эта автоматика работала, мы при создании меню «Управление закладками» создаем кнопки, которые отвечают за удаление той или иной закладки. Имя закладки пишем в свойство &lt;span style="font-family:monospace;"&gt;tag&lt;/span&gt;. Удаление закладки происходит при выполнении макроса &lt;span style="font-family:monospace;"&gt;delbm_onAction&lt;/span&gt;&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Удаление закладки из меню&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;delbm_onAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl slc"&gt;'Удаление закладки при выборе ее в соответствующем меню&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  bm&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwd"&gt;Item&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control&lt;span class="hl sym"&gt;.&lt;/span&gt;Tag&lt;span class="hl sym"&gt;).&lt;/span&gt;Delete&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;  CustomRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;Invalidate&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Также при выполнении макроса &lt;span style="font-family:monospace;"&gt;GoToBookmark&lt;/span&gt; осуществляется переход к выбранной закладке.&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Переход к закладке&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;GoToBookmark&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl slc"&gt;'Переход к закладке&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  &lt;span class="hl kwa"&gt;On Error Resume Next&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;  Selection&lt;span class="hl sym"&gt;.&lt;/span&gt;&lt;span class="hl kwa"&gt;GoTo&lt;/span&gt; What&lt;span class="hl sym"&gt;:=&lt;/span&gt;wdGoToBookmark&lt;span class="hl sym"&gt;,&lt;/span&gt; Name&lt;span class="hl sym"&gt;:=&lt;/span&gt;control&lt;span class="hl sym"&gt;.&lt;/span&gt;Tag&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;  &lt;span class="hl kwa"&gt;If&lt;/span&gt; Err&lt;span class="hl sym"&gt;.&lt;/span&gt;Number &lt;span class="hl sym"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="hl num"&gt;0&lt;/span&gt; &lt;span class="hl kwa"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;    MsgBox &lt;span class="hl str"&gt;&amp;quot;Не удалось перейти к закладке «&amp;quot;&lt;/span&gt; &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; control&lt;span class="hl sym"&gt;.&lt;/span&gt;Tag &lt;span class="hl sym"&gt;&amp;amp;&lt;/span&gt; &lt;span class="hl str"&gt;&amp;quot;»&amp;quot;&lt;/span&gt;&lt;span class="hl sym"&gt;,&lt;/span&gt; vbOKOnly&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;  &lt;span class="hl kwa"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Для добавления закладки вызывается стандартный диалог работы с закладками&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Добавление закладки&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;menu_AddBookmark_onAction&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl slc"&gt;'Появление окна для добавления закладки в документ&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl slc"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  &lt;span class="hl kwd"&gt;Dialogs&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;wdDialogInsertBookmark&lt;span class="hl sym"&gt;).&lt;/span&gt;Show&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;  CustomRibbon&lt;span class="hl sym"&gt;.&lt;/span&gt;Invalidate&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;При любых действиях с закладками вызывается метод &lt;span style="font-family:monospace;"&gt;CustomRibbon.Invalidate&lt;/span&gt;, который обновляет содержимое ленты.&lt;br /&gt;С закладками получилось все довольно просто. Теперь другая задача стоит: как сформировать динамическое меню из доступных для выполнения макросов, которые можно запустить через стандартное диалоговое окно по &lt;span style="font-family:monospace;"&gt;Alt+F8&lt;/span&gt;? Сразу скажу, что в черновом варианте эту задачу я уже решил. Подробности далее в публикациях.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-2149092108715689598?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/2149092108715689598/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=2149092108715689598&amp;isPopup=true' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/2149092108715689598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/2149092108715689598'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2009/01/blog-post.html' title='Динамическое меню (продолжение)'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1wP7OmLw2YY/SWGtkdWE7oI/AAAAAAAAAx4/BLL1ezJL_RE/s72-c/bookmarks.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-1912067568700376584</id><published>2008-12-29T05:17:00.001+02:00</published><updated>2009-01-06T09:54:50.050+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ленточный интерфейс'/><category scheme='http://www.blogger.com/atom/ns#' term='Работа с закладками в Word2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Динамическое меню'/><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Динамические ленты'/><title type='text'>Динамические меню</title><content type='html'>Стало мне интересно: «А можно формировать код ленты на лету?» На это меня натолкнул Антон Кокин с &lt;a href="http://wordexpert.ru/2008/10/24/shablon-dlya-raboty-s-zakladkami/"&gt;«Шаблоном для работы с закладками»&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-1912067568700376584?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/1912067568700376584/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=1912067568700376584&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/1912067568700376584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/1912067568700376584'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2008/12/blog-post_28.html' title='Динамические меню'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-8823461029911126589</id><published>2008-12-27T21:31:00.000+02:00</published><updated>2009-12-19T12:44:57.863+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ленточный интерфейс'/><category scheme='http://www.blogger.com/atom/ns#' term='Установка междустрочного интервала'/><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><title type='text'>Обновление ленты в зависимости от внешних условий</title><content type='html'>Вчера разговор закончился на том, что была поставлена задача об обновлении данных в поле ввода при изменении выбора.&lt;br /&gt;Решается это так. Для начала нужно научиться ловить события, которые генерирует &lt;span style="font-weight:bold;"&gt;Word&lt;/span&gt;. В нашем случае нужно определять, что пользователь изменил набор выбранных объектов. При этом генерируется событие &lt;span style="font-family:monospace;"&gt;WindowSelectionChange&lt;/span&gt;. Как его ловить? Это подробно описано в &lt;a href="http://wordmacroses.blogspot.com/"&gt;моем блоге, посвященном макросам&lt;/a&gt;.&lt;br /&gt;Здесь же мы подробно рассмотрим вопрос, связанный с обновлением информации на ленте.&lt;br /&gt;Итак. Чтобы работала обратная связь с лентой, код XML, который описывает ленту, нужно доработать.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Во-первых&lt;/span&gt;, нужно добавить событие &lt;span style="font-family:monospace;"&gt;onLoad&lt;/span&gt;. Делается это так:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Процедура onLoad&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;customUI&lt;/span&gt; &lt;span class="hl kwb"&gt;xmlns&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;http://schemas.microsoft.com/office/2006/01/customui&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;  &lt;span class="hl kwb"&gt;onLoad&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;LoadRibbon&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Во-вторых&lt;/span&gt;, добавить в наше поле событие &lt;span style="font-family:monospace;"&gt;getText&lt;/span&gt;:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Событие getText&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;editBox&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;SetLineSpacing&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;  &lt;span class="hl kwb"&gt;onChange&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;УстановитьМежстрочныйИнтервал&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwb"&gt;sizeString&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;3&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;  &lt;span class="hl kwb"&gt;screentip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Установить междустрочный интервал&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;  &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Укажите число для междустрочного интервала.&amp;amp;#13;Для одинарного указать 1,5, для двойного — 2 и т.д.&amp;amp;#13;Значение интервала применяется к выделенному тексту.&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;  &lt;span class="hl kwb"&gt;getText&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;SetLineSpacing_GetText&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Этот код отличается от того, что я приводил раньше, но не принципиально. Я сделал имена макросов более понятными, чтобы не путаться. Параметр &lt;span style="font-family:monospace;"&gt;sizeString&lt;/span&gt; определяет длину поля ввода в символах.&lt;br /&gt;Событие &lt;span style="font-family:monospace;"&gt;getText&lt;/span&gt; отвечает как раз за управление содержимым поля ввода.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;В-третьих&lt;/span&gt;, нужно правильно написать обработчики событий &lt;span style="font-family:monospace;"&gt;onLoad&lt;/span&gt; и &lt;span style="font-family:monospace;"&gt;getText&lt;/span&gt;. Я это сделал так:&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Обработчики событий ленты onLoad и getText&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Public&lt;/span&gt; CustomRibbon &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonUI &lt;span class="hl slc"&gt;'указатель для хранения ссылки на ленту. Здесь необязателен, но рекомендуется&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;&lt;span class="hl kwa"&gt;Dim&lt;/span&gt; MyEvents &lt;span class="hl kwa"&gt;As New&lt;/span&gt; EventClassModule &lt;span class="hl slc"&gt;'конструктор класса для отслеживания событий&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;LoadRibbon&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;ribbon &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonUI&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl slc"&gt;'загружаем ленту&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;   &lt;span class="hl kwa"&gt;Set&lt;/span&gt; CustomRibbon &lt;span class="hl sym"&gt;=&lt;/span&gt; ribbon &lt;span class="hl slc"&gt;'создаем указатель на ленту&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;   ribbon&lt;span class="hl sym"&gt;.&lt;/span&gt;Invalidate &lt;span class="hl slc"&gt;'обновляем ленту&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;   &lt;span class="hl kwa"&gt;Set&lt;/span&gt; MyEvents&lt;span class="hl sym"&gt;.&lt;/span&gt;App &lt;span class="hl sym"&gt;=&lt;/span&gt; Word&lt;span class="hl sym"&gt;.&lt;/span&gt;Application &lt;span class="hl slc"&gt;'перенаправляем события из приложения в наш класс.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; &lt;span class="hl kwd"&gt;SetLineSpacing_GetText&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;control &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; &lt;span class="hl kwa"&gt;ByRef&lt;/span&gt; text&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;   text &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;PointsToLines&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;Selection&lt;span class="hl sym"&gt;.&lt;/span&gt;ParagraphFormat&lt;span class="hl sym"&gt;.&lt;/span&gt;LineSpacing&lt;span class="hl sym"&gt;)&lt;/span&gt; &lt;span class="hl slc"&gt;'устанавливаем в поле ввода значение межстрочного интервала выделенного абзаца.&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Еще раз напомню, что узнать о том, как работать с событиями приложения можно &lt;a href="http://wordmacroses.blogspot.com/"&gt;здесь&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-8823461029911126589?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/8823461029911126589/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=8823461029911126589&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/8823461029911126589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/8823461029911126589'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2008/12/blog-post_27.html' title='Обновление ленты в зависимости от внешних условий'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-321284796966299595</id><published>2008-12-27T01:02:00.000+02:00</published><updated>2009-12-19T12:37:35.379+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ленточный интерфейс'/><category scheme='http://www.blogger.com/atom/ns#' term='Установка междустрочного интервала'/><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><title type='text'>Получение данных из текстового поля</title><content type='html'>При работе с текстовыми документами мне часто приходится изменять междустрочный интервал. Постоянно открывать для этого соответствующее меню мне надоело. Поэтому я подумал:«А как сделать, чтобы интервал задавать числом? 2 — для двойного интервала, 1 — для одинарного, или просто конкретное значение?»&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Во-первых&lt;/span&gt;, поместить на ленту поле &lt;span style="font-family:monospace;"&gt;editbox&lt;/span&gt;.&lt;br /&gt;Вот так, например:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1wP7OmLw2YY/SVVkn4qJ_LI/AAAAAAAAAxY/6lNnHy8AzyQ/s1600-h/editboxonribbon.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 124px; height: 79px;" src="http://4.bp.blogspot.com/_1wP7OmLw2YY/SVVkn4qJ_LI/AAAAAAAAAxY/6lNnHy8AzyQ/s400/editboxonribbon.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5284240374176021682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Код для вставки поля для редактирования&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;editBox&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;__SetLineSpacing&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;  &lt;span class="hl kwb"&gt;onChange&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Macroses.УстановитьМежстрочныйИнтервал&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;  &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Укажите число для междустрочного интервала&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Во-вторых&lt;/span&gt;, написать код макроса, который бы брал текст из поля и соответственно устанавливал междустрочный интервал. Довольно долгие поиски дали вот такой результат (&lt;a href="http://msdn.microsoft.com/en-us/library/aa722523.aspx"&gt;с этого сайта&lt;/a&gt;):&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Код VBA&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;Sub&lt;/span&gt; УстановитьМежстрочныйИнтервал&lt;span class="hl sym"&gt;(&lt;/span&gt;editbox &lt;span class="hl kwa"&gt;As&lt;/span&gt; IRibbonControl&lt;span class="hl sym"&gt;,&lt;/span&gt; text &lt;span class="hl kwa"&gt;As&lt;/span&gt; &lt;span class="hl kwb"&gt;String&lt;/span&gt;&lt;span class="hl sym"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;    Selection&lt;span class="hl sym"&gt;.&lt;/span&gt;ParagraphFormat&lt;span class="hl sym"&gt;.&lt;/span&gt;LineSpacing &lt;span class="hl sym"&gt;=&lt;/span&gt; &lt;span class="hl kwd"&gt;LinesToPoints&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;&lt;span class="hl kwd"&gt;Val&lt;/span&gt;&lt;span class="hl sym"&gt;(&lt;/span&gt;text&lt;span class="hl sym"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;&lt;span class="hl kwa"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Как видно код очень даже не сложный, но очень сложно вообще откопать информацию, особенно на русском языке, по работе с новым интерфейсом. На MSDN при вводе в поле поиска фразы «ribbon vba» страница просто закрывалась. Прямо масонский заговор &lt;img src="http://mail.google.com/mail/e/360"/&gt;&lt;br /&gt;Итак, весь секрет заключался в параметре &lt;span style="font-family:monospace;"&gt;text&lt;/span&gt;, который очень не очевиден, и просто объявляется.&lt;br /&gt;Теперь задача в другом: как выставлять значение в этом поле в соответствии со строчным интервалом уже выделенного текста? И все это только средствами VBA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-321284796966299595?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/321284796966299595/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=321284796966299595&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/321284796966299595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/321284796966299595'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2008/12/blog-post_26.html' title='Получение данных из текстового поля'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1wP7OmLw2YY/SVVkn4qJ_LI/AAAAAAAAAxY/6lNnHy8AzyQ/s72-c/editboxonribbon.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-4593406482730752821</id><published>2008-12-25T08:48:00.000+02:00</published><updated>2009-12-19T12:20:54.478+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ленточный интерфейс'/><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><title type='text'></title><content type='html'>Возникает вопрос: как все это получилось?&lt;br /&gt;Само создание панели инструментов на ленте не представляет особой сложности и довольно подробно рассмотрено на уже упомянутом &lt;a href="http://novikovmaxim.narod.ru"&gt;сайте Максима Новикова&lt;/a&gt;.&lt;br /&gt;А как же прикрутить к нему собственные кнопки или меню, которые должны выполнять мои собственные макросы?&lt;br /&gt;Начнем по порядку.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Во-первых&lt;/span&gt;, нужно создать кнопку, или любой другой элемент, который должен запускать на выполнение определенный макрос.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Во-вторых&lt;/span&gt;, нужно указать параметр &lt;span style="font-family: monospace;"&gt;onAction&lt;/span&gt;, в котором определить имя макроса, который, собственно и должен запускаться при нажатии на данную кнопку или пункт меню, что в общем-то одно и тоже.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;В-третьих&lt;/span&gt;, написать правильно сам макрос.&lt;br /&gt;Вот меню, которое я использую постоянно в своей работе. Оно еще не содержит всех пунктов, которые мне нужны, но уже работает.&lt;br /&gt;&lt;div class="codecontainer"&gt;&lt;div class="codeheader"&gt;&lt;span class="codeheader"&gt;Меню и код к нему&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&lt;a class="copylink" href="#"&gt;Копировать код без номеров строк&lt;/a&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1wP7OmLw2YY/SVPyHWr5UtI/AAAAAAAAAxQ/8t9evUXXqbw/s1600-h/macrosmenu.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 234px; height: 184px;" src="http://4.bp.blogspot.com/_1wP7OmLw2YY/SVPyHWr5UtI/AAAAAAAAAxQ/8t9evUXXqbw/s400/macrosmenu.png" border="0" alt="Собственное меню для запуска макросов"id="BLOGGER_PHOTO_ID_5283832995998421714" /&gt;&lt;/a&gt;&lt;div class="hl"&gt;&lt;span class="hl line"&gt;    1 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;menu&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;__MyMacroses&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Макросы&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    2 &lt;/span&gt;    &lt;span class="hl kwa"&gt;&amp;lt;menuSeparator&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;__Separator1&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;title&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Вставка в документ&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    3 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;InsertQuotes&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    4 &lt;/span&gt;                &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Взять в кавычки&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    5 &lt;/span&gt;                &lt;span class="hl kwb"&gt;image&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;QUOTES.png&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    6 &lt;/span&gt;                &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    7 &lt;/span&gt;                &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Macroses.ВзятьВКавычки&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    8 &lt;/span&gt;                &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Выделенный текст заключается в угловые кавычки.&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;    9 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ConvertToRoman&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   10 &lt;/span&gt;                &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Сделать римской цифрой&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   11 &lt;/span&gt;                &lt;span class="hl kwb"&gt;image&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;roman.png&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   12 &lt;/span&gt;                &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   13 &lt;/span&gt;                &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Macroses.СделатьРимскойЦифрой&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   14 &lt;/span&gt;                &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Выделенный текст преобразуется в римскую цифру.&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   15 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;InsertFormula&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   16 &lt;/span&gt;                &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Вставить формулу с нумерацией&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   17 &lt;/span&gt;                &lt;span class="hl kwb"&gt;image&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;function.png&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   18 &lt;/span&gt;                &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   19 &lt;/span&gt;                &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Macroses.Формула_с_нумерацией&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   20 &lt;/span&gt;                &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Вставка формулы по центру страницы и нумерацией по правому краю&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   21 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;menuSeparator&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;__Separator2&amp;quot;&lt;/span&gt; &lt;span class="hl kwb"&gt;title&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Правка документа&amp;quot;&lt;/span&gt; &lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   22 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ClearDoubleParagraphs&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   23 &lt;/span&gt;                &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Удалить абзацы&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   24 &lt;/span&gt;                &lt;span class="hl kwb"&gt;image&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;parags.png&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   25 &lt;/span&gt;                &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   26 &lt;/span&gt;                &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Macroses.Удалить сдвоенные абзацы&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   27 &lt;/span&gt;                &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Удаление 2-х и более символов абзаца подряд.&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   28 &lt;/span&gt;        &lt;span class="hl kwa"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="hl kwb"&gt;id&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;ClearDoubleSpaces&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   29 &lt;/span&gt;                &lt;span class="hl kwb"&gt;label&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Удалить пробелы&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   30 &lt;/span&gt;                &lt;span class="hl kwb"&gt;onAction&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;MyButtonAction&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   31 &lt;/span&gt;                &lt;span class="hl kwb"&gt;tag&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Macroses.Удалить_лишние_пробелы&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   32 &lt;/span&gt;                &lt;span class="hl kwb"&gt;supertip&lt;/span&gt;=&lt;span class="hl str"&gt;&amp;quot;Удаление 2-х и более пробелов подряд.&amp;quot;&lt;/span&gt;&lt;span class="hl kwa"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="hl line"&gt;   33 &lt;/span&gt;&lt;span class="hl kwa"&gt;&amp;lt;/menu&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Как видно из кода макроса он запускает на выполнение другой макрос, имя которого прописано в свойстве &lt;span style="font-family:monospace;"&gt;tag&lt;/span&gt; нашей кнопки. Этот простой маневр позволяет использовать только один макрос, для обработки нажатий на все кнопки. Главное, не забывать, что для каждой кнопки нужно указывать свое свойство &lt;span style="font-family:monospace;"&gt;tag&lt;/span&gt;.&lt;br /&gt;Пока все.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-4593406482730752821?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/4593406482730752821/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=4593406482730752821&amp;isPopup=true' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/4593406482730752821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/4593406482730752821'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2008/12/blog-post.html' title=''/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1wP7OmLw2YY/SVPyHWr5UtI/AAAAAAAAAxQ/8t9evUXXqbw/s72-c/macrosmenu.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-6327328625606023055</id><published>2008-12-23T19:17:00.000+02:00</published><updated>2009-12-24T01:20:55.621+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ленточный интерфейс'/><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><title type='text'></title><content type='html'>Предыдущая запись в блоге была сделана в начале года и она является первой вехой на этапе преобразования интерфейса.&lt;br /&gt;Начал я изменение интерфейса Office 2007 после того, как мне надоело листать вкладки в поисках нужного инструмента. Огромную пользу в этом оказал &lt;a href="http://novikovmaxim.narod.ru/"&gt;сайт Максима Новикова&lt;/a&gt; и его &lt;a href="http://novikovmaxim.narod.ru/products/ribbon/ribbon.htm"&gt;программа для редактирования интерфейса&lt;/a&gt;.&lt;br /&gt;Результатами моих усилий стала панель с инструментами&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1wP7OmLw2YY/SVE6uom6LEI/AAAAAAAAAv8/b6GpEiP9QdI/s1600-h/MyToolPanel.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 100%; height: 65px;" src="http://4.bp.blogspot.com/_1wP7OmLw2YY/SVE6uom6LEI/AAAAAAAAAv8/b6GpEiP9QdI/s320/MyToolPanel.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5283068410731310146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Вся польза этой панели заключается в том, что в 80% случаев мне не нужны другие вкладки. Все есть на этой. Кроме редактирования рисунков.&lt;br /&gt;Следующей заботой стала необходимость прикрутить на эту панель кнопки, которые выполняли бы мои собственные макросы.&lt;br /&gt;Это потребовало определенных усилий. Результат на картинке&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1wP7OmLw2YY/SVE5DhQVvNI/AAAAAAAAAv0/LO9AxJNLYl8/s1600-h/mymacrobut.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 199px; height: 69px;" src="http://3.bp.blogspot.com/_1wP7OmLw2YY/SVE5DhQVvNI/AAAAAAAAAv0/LO9AxJNLYl8/s320/mymacrobut.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5283066570511596754" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-6327328625606023055?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/6327328625606023055/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=6327328625606023055&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/6327328625606023055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/6327328625606023055'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2008/12/office-2007.html' title=''/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1wP7OmLw2YY/SVE6uom6LEI/AAAAAAAAAv8/b6GpEiP9QdI/s72-c/MyToolPanel.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2606944694254464677.post-5733349538795786688</id><published>2008-01-25T05:34:00.000+02:00</published><updated>2009-01-06T09:54:50.053+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ленточный интерфейс'/><category scheme='http://www.blogger.com/atom/ns#' term='лента'/><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><title type='text'>Работаем над Office 2007</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;Вот уже месяц, как я начал настраивать поначалу недоступный интерфейс нового офиса. Как оказалось, информации на русском языке по этой теме совсем немного (я сумел найти 2 места где более или менее толково объясняется, что надо делать и куда нажимать).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Посему решил обратиться к мировому русско- украиноязычному сообществу с просьбой о совместной работе. Кстати, подвернулся и &lt;a href="http://www.google.com"&gt;&lt;img src="http://viter-alex.narod.ru/google.png" /&gt;&lt;/a&gt;  со своим &lt;a href="http://www.blogger.com"&gt;&lt;img src="http://viter-alex.narod.ru/blogger.png"/&gt;&lt;/a&gt;, поскольку не охота начинать такую тему на форуме.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Со своей стороны я уже немного разобрался как и где нажимать. Научился подключать к кнопкам свои макросы.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Пример моих кнопок:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://viter-alex.narod.ru/formulawithnumber.png" /&gt;&lt;img src="http://viter-alex.narod.ru/insertsofstatistic.png" /&gt;&lt;img src="http://viter-alex.narod.ru/editdocument.png" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Кого заинтересовала эта тема, милости просим.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;На Украине (именно «на» а не «в» как хочется Задорнову) есть поговорка «Гуртом і батька легше бити», поэтому нужно подналечь и разобраться и этой темой.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2606944694254464677-5733349538795786688?l=customoffice2007.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://customoffice2007.blogspot.com/feeds/5733349538795786688/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2606944694254464677&amp;postID=5733349538795786688&amp;isPopup=true' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/5733349538795786688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2606944694254464677/posts/default/5733349538795786688'/><link rel='alternate' type='text/html' href='http://customoffice2007.blogspot.com/2008/01/office-2007.html' title='Работаем над Office 2007'/><author><name>alex.viter</name><uri>http://www.blogger.com/profile/17375557256051165722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
