Страницы: Пред. 1 2 3
RSS
Восстановление связи с Ribbon
 
Цитата
Андрей VG написал:
Покажите в файле такой обработчик события
спасибо за ответ, ещё не смотрел, чуть позже гляну, я имел ввиду, мало ли в AutoOpen будет работать а уже в открытом файле не будет))
лучше переспросить
но видимо будет работать в обоих случаях
просто вместо AutoOpen помещаешь в нужную процедуру
Код
  'контекстное меню появляется при наведении на рисунок
    With Application.CommandBars("Inline Picture")
        With .Controls.Add(msoControlButton)
            .OnAction = "Действие_с_InlinePicture"
            '"&" перед знаком, означает, что этому знаку назначена горячая клавиша
            .Caption = "ДНСД Добавить овал 5х3 см без заливки с линией красного цвета &1"
        End With
    End With
в данном случае в процедуру Действие_с_InlinePicture
 
Цитата
Ципихович Эндрю написал:
помещаешь в нужную процедуру
А каким образов вы пришли к выводу, что CommandBar и Ribbon - это одно и тоже?
 
я такого не говорил
просто если есть код который правит Риббон на мой взгляд какая разница куда его вешать?
разве не так?
 
Цитата
Ципихович Эндрю написал:
если есть код который правит Риббон
Где есть? В VBA - такого фактически нет, можете попробовать адаптировать Customizing Context Menus in Microsoft Excel 2010-2016 для Word разве что. Ну, или добро пожаловать в мир C# и VSTO :)
Цитата
Ципихович Эндрю написал:
я такого не говорил
Вы привели пример, не оговорив деталей. Потому и возник вопрос.
Изменено: Андрей VG - 19.05.2020 13:56:04
 
Где есть?
я думал что в сообщении № 60 в файле есть пример
  • wordRibbon.docm (15.93 КБ)
  • разве нет?, а что там? пока несколько дней нет доступа к соответствующему Ворду2007+
 
Цитата
Ципихович Эндрю написал:
что в сообщении № 60 в файле есть пример
В файле примера нет кода, правящего Ribbon. Только скрыть/показать. Читайте внимательнее ;)
Цитата
Андрей VG написал:
под этим подразумевается банальное нечто скрыть/показать...
 
понял, ознакомлюсь, отпишусь, спс
 
а вообще алгоритм правки кодом вба риббон какой?
я думаю так
риббон - это xml файл, значит текстовый, вба читает пишет текстовые файлы без проблем
инет пишет о том как это вручную делается правка риббона так - открыть архив dotm, открыть xml файл и править
но может ли вба это делать?
Open "D:\tmp.txt" For Input As 1
как писать
Open "C:\Documents and Settings\Admin\Application Data\Microsoft\Шаблоны - это адрес папки, а далее??
даже если может можно ли перезаписывать риббон в момент когда Ворд открыт, не будет ли это явление согласно поговорке рубим сук на котором сидим?
 
Добрый день, уважаемые коллеги.
Эндрю, если вы глубоко не изучите тему конструирования ленты, вы будете еще долго задавать множество вопросов, и терять свое время.
При этом не факт, что ваши вопросы правильно поймут. И не факт, что в файле, который вы получите будет именно то, что вам нужно.
Это походит на разговор моей супруги с электриком, когда исчезло электричество в половине квартиры, все равно мне пришлось ему звонить и объяснять.
Как конструировать и программировать ленту - широкая тема, которой посвящены 1000 статей в сети. Какого-то лучшего рецепта нет, каждый выбирает свой путь.
Например, я программирую xml так:
- отключаю ленту по умолчанию;
- выбираю существующие tabs mso, которые меня устраивают целиком (visible = true);
- создаю свои tabs , в которые включаю как свои элементы управления, так и существующие mso;
- управляю свойством visible для существующих mso (потому что иные свойства не программируются), и свойствами enabled и visible для своих элементов;
- в зависимости от прав доступа пользователя, а также от состояния редактирования документа изменяется состояние элементов управления ленты: они могут быть невидимы или недоступны.
Попытка динамического обновления файла xml из vba не дала удовлетворительного результата по надежности. При этом нужно понимать, что обновление ленты может происходить только при переключении между документами (передача фокуса). На встроенных событиях лента изменяться не будет, потому что файл xml внутри архива doc не перепишется пока  документ в фокусе. Поэтому способ динамического обновления файла xml средствами vba - это тупиковый путь. Как правильно написал Андрей VG программирование на С: С++, С# вам в помощь, там можно сделать).
Управляйте элементами ленты. Создавайте свои и используйте существующие. И изучайте эту тему самостоятельно.
На форуме предполагается, что человек уже знает тему, и ему нужно решить какую-то конкретную локальную задачу.  
 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI onLoad="Ribbon_OnLoad" xmlns="http://schemas.microsoft.com/office/2009/07/customui"&gt;
<ribbon startFromScratch="true">
<qat>
<sharedControls>
<control idMso="FileSave"/>
<control idMso="Undo"/>
<control idMso="Redo"/>
<button id="cmdRefreshRibbon" label="Обновить ленту" imageMso="RefreshMenu" onAction="cmdRefreshRibbon_RibClick"
screentip="Обновить ленту"
supertip="Применяется при неправильном отображении ленты.
&#10;Признаки неправильного отображения ленты: недоступны или не отображаются
некоторые закладки или кнопки, нарушен порядок элементов и т.д."
/>
</sharedControls>
</qat>

<tabs>
<!-- MS Office Tabs управление встроенными Tabs по правам доступа в VBA процедуре MsoTab_RibGetVisible -->
<tab idMso="TabHome" getVisible="MsoTab_RibGetVisible"/>
<tab idMso="TabView" getVisible="MsoTab_RibGetVisible"/>
<tab idMso="TabPrintPreview" getVisible="MsoTab_RibGetVisible"/>
<tab idMso="TabHeaderAndFooterToolsDesign" getVisible="MsoTab_RibGetVisible"/>
<tab idMso="TabPageLayoutExcel" getVisible="MsoTab_RibGetVisible"/>

<tab idMso="TabData" getVisible="MsoTab_RibGetVisible"/>
<tab idMso="TabFormulas" getVisible="MsoTab_RibGetVisible"/>
<tab idMso="TabInsert" getVisible="MsoTab_RibGetVisible"/>
<tab idMso="TabDeveloper" getVisible="MsoTab_RibGetVisible"/>
<tab idMso="TabPowerPivot" getVisible="MsoTab_RibGetVisible"/>
<tab idMso="TabReview" getVisible="MsoTab_RibGetVisible"/>

<!-- Мои вкладки -->
<tab id="tabGraph" label="ГРАФИК" insertBeforeMso="TabHome" >
<!-- группа MSO Буфер обмена (Clipboard): копировать / вставить  -->
<group idMso="GroupClipboard" getVisible="Group_RibGetVisible">
<!-- Все кнопки, которые есть в группе Mso -->
</group>

<!-- Моя группа Структура: группировка, форматирование, внесение формул -->
<!-- ============================================================­============================================================­ -->
<group id="grpStructure" label="Структура" getVisible="Group_RibGetVisible">
<!-- меню Структура -->
<menu id="mnuStructure" label="Структура" size="large" imageMso="ViewGridlinesPowerPoint" tag="grpStructure"
getEnabled="grpStructure_RibGetEnabled"
screentip="Операции для всей таблицы: форматирования, группировки, вставки формул и расчета по ним">
.................
 
Хотелось бы восстановить авторское право Rory Archibald.
Владимир
Страницы: Пред. 1 2 3
Наверх