Откройте вкладку настроек, и обратите внимание на раздел в правой части «Добавление «Открыть в Ribbon XML Editor» в контекстное меню проводника». Отметьте галочками те документы, для которых в контекстное меню проводника должен быть добавлен соответствующий пункт. В нашем случае достаточно одной галочки в столбце «Для файлов Word» напротив «Документ с макросами», но можно отметить и все галочки. Затем нажмите кнопку «Установить».
Обязательно прочтите всплывающую подсказку на кнопке, там есть много полезной информации. В частности, то, что документ будет открываться в той копии Ribbon XML Editor, из которой была осуществлена установка. Перед удалением программы, для того, чтобы убрать ненужные уже пункты контекстных меню, не забудьте снять все установленные галочки и снова нажать кнопку «Установить» для установки отменённого состояния пунктов контекстного меню.
Напишем интерфейс, аналогичный прежней надстройке:
<?xml version="1.0" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="Вкладка1" label="Полезные надстройки" insertBeforeMso="TabHome" keytip="Н">
<group id="РаботаСоСтроками" label="Работа со строками">
<button
id="ДублироватьТекущуюСтроку"
onAction="ДублироватьТекущуюСтроку"
label="Дублировать"
keytip="Д"
imageMso="QuickStylesSets"
size="large"
screentip="Дублировать текущую строку"
supertip="Сопировать текущую строку в строку ниже"/>
<button
id="УдалитьСдвоенныеПустыеСтроки"
onAction="УдалитьСдвоенныеПустыеСтроки"
label="Удалить повторные пустые строки"
keytip="С"
imageMso="RecordsCollapseAllSubdatasheets"
size="large"
screentip="Удалить повторные пустые строки"
supertip="Найти и заменить все повторяющиеся пустые строки одной"/>
<button
id="УдалитьПустыеСтроки"
onAction="УдалитьПустыеСтроки"
label="Удалить пустые строки"
keytip="В"
imageMso="GroupQuerySetup"
size="large"
screentip="Удалить все пустые строки"
supertip="Найти и удалить все пустые строки"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Закроем Word, и удалим нашу прежнюю надстройку из папки:
C:\Users\[ИмяПользователя]\AppData\Roaming\Microsoft\Word\STARTUP
xmlns:МПИ="http://customui.blogspot.ru"
xmlns="http://schemas.microsoft.com/office/2006/01/customui"
<tab idq="МПИ:Вкладка1" insertbeforemso="TabHome" keytip="Н" label="Полезные надстройки">
'НайтиИЗаменить (компонент: button, атрибут: onAction), 2007
Sub НайтиИЗаменить(findString As String, replaceString As String)
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = findString
.Replacement.Text = replaceString
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub
'ДублироватьТекущуюСтроку (компонент: button, атрибут: onAction), 2007
Sub ДублироватьТекущуюСтроку(control As IRibbonControl)
With Selection
.HomeKey Unit:=wdLine
.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
.Copy
.HomeKey Unit:=wdLine
.PasteAndFormat (wdFormatOriginalFormatting)
End With
End Sub
'УдалитьСдвоенныеПустыеСтроки (компонент: button, атрибут: onAction), 2007
Sub УдалитьСдвоенныеПустыеСтроки(control As IRibbonControl)
Dim NumCharsBefore As Long, NumCharsAfter As Long
Do
NumCharsBefore = ActiveDocument.Characters.Count
Call НайтиИЗаменить("^p^p^p", "^p^p")
NumCharsAfter = ActiveDocument.Characters.Count
Loop Until NumCharsBefore = NumCharsAfter
End Sub
'УдалитьПустыеСтроки (компонент: button, атрибут: onAction), 2007
Sub УдалитьПустыеСтроки(control As IRibbonControl)
Dim NumCharsBefore As Long, NumCharsAfter As Long
Do
NumCharsBefore = ActiveDocument.Characters.Count
Call НайтиИЗаменить("^p^p", "^p")
NumCharsAfter = ActiveDocument.Characters.Count
Loop Until NumCharsBefore = NumCharsAfter
End Sub
C:\Users\[ИмяПользователя]\AppData\Roaming\Microsoft\Word\STARTUP
C:\Users\[ИмяПользователя]\AppData\Roaming\Microsoft\Word\STARTUP
А можно ли как-то регулировать порядок групп на вкладке? Чтобы группа из второй надстройки располагалась после, а не до группы из первой надстройки.
ОтветитьНу вообще, у групп тоже есть атрибуты insertBeforeMso и insertAfterMso.
А также insertBeforeQ и insertAfterQ.
Спасибо
Пожалуйста! :-)
Что-то не получается. А какие значения необходимо задать этим атрибутам?
ОтветитьКаким именно атрибутам? В статье приведён полный код. А в xml-разметке в качестве значения атрибута просто прописывается имя функции.