Попробуйте использовать следующий простой способ выполнить то, что вам нужно, на самом деле:
Private Sub AddSheetEventCallProc()
'It needs a reference to 'Microsoft Visual Basic for Applications Extensibility x.x'
Dim wb As Workbook, wProj As VBIDE.VBProject, wCom As VBIDE.VBComponent
Dim wMod As VBIDE.CodeModule, Hrng As Range, LineI As Long
Set wb = Workbooks.Add 'any existing workbook can be used here
Set Hrng = wb.Worksheets(1).Range("A1") 'use here the cell you need
'Add the hyperlink:
Hrng.Hyperlinks.Add Anchor:=Hrng, _
Address:="", SubAddress:=Hrng.Address, TextToDisplay:="Call Macro"
With wb
Set wProj = .VBProject
Set wCom = wProj.VBComponents(Worksheets(1).codename)
Set wMod = wCom.CodeModule
With wMod
On Error Resume Next
LineI = .CreateEventProc("FollowHyperlink", "Worksheet"): LineI = LineI + 1
.InsertLines LineI, " If Target.Range.Address = """ & Hrng.Address & """ Then": LineI = LineI + 1
.InsertLines LineI, " Application.Run ""ADDINPRESA.xlam!testMsgbox""": LineI = LineI + 1
.InsertLines LineI, " End If"
On Error GoTo 0
End With
End With
End Sub
Второй (более сложный) способ - заставить вашу надстройку создать новую вкладку ленты:
Имея надстройку, хорошо создать новый стандартный модуль с именем «modRibbon» или аналогичным. Это не обязательно, но хорошо бы отделить модуль ленты c от модуля, выполняющего надстройку. Итак, в этом, где вы должны создать Subs
, который можно вызывать с помощью элементов управления создаваемой вкладки:
Option Explicit
Sub Test1(control As IRibbonControl)
appTest1 'use here your Sub name
End Sub
Sub Test2(control As IRibbonControl)
appTest2
End Sub
Sub Test3(control As IRibbonControl)
appTest3
End Sub
Полезно скопировать этот код в окне Блокнота, чтобы использовать его, когда файл xml будет создано.
Затем создайте модуль, в котором будут существовать подпрограммы, вызываемые вышеперечисленными:
Sub appTest1 () MsgBox "Идет ...", "Test1" End Sub Sub appTest2 ( ) MsgBox "Идет ...",, "Test2" End Sub Sub appTest3 () MsgBox "Идет ...",, "Test3" End Sub
Теперь вы нужно так называемое приложение OfficeRibbonEditor. Я использую OfficeRibbonXEditor
скачанный с здесь . Пожалуйста, загрузите «OfficeRibbonXEditor-NETFramework.zip». После загрузки извлеките файл из архива и просто используйте его. Нет необходимости установки. Теперь запустите его, нажмите кнопку Open
, найдите книгу надстроек и нажмите OK
. Выберите открытую надстройку и нажмите меню «Вставить». Выберите «Часть пользовательского интерфейса Office 2010+» для Office 2010 или более поздней версии. На 2007 год выберите другой вариант. Если вам нужно, чтобы надстройка была совместима с обоими случаями, будут вставлены оба файла xml. Я покажу, как создать ленту Tab только для первого варианта. Дважды щелкните «customUI14.xml», который был создан, и скопируйте следующий код. Теперь он разбирается с указанными выше подпрограммами, но для того, чтобы он вызывал ваши указанные подпрограммы c, используйте окно Блокнота, куда вы скопировали имя подпрограммы:
Теперь закройте надстройку из Excel и нажмите кнопку Validate
. Если вы допустили ошибку в коде xml, строка с ошибкой будет подсвечена. Если все в порядке, нажмите кнопку «Сохранить» и откройте надстройку. Он создаст новую вкладку ленты (TestTab
) с тремя кнопками ....
В inte rnet есть способы найти все
imageMSO
типы. Также можно использовать собственные иконки. Я сделал это несколько лет назад. Я не помню точно, как, но вам нужна эта опция, я могу проверить мой архив файлов.
Для выяснения проблем очень хорошим ресурсом был бы сайт Рона де Брейна, который разъясняет способ выполнения такая вкладка ленты, из более чем десяти лет. Вы можете найти его здесь .
И надстройка не «импортирует» всю ленту. Он только создает новую вкладку, добавляя к ней две существующие и заставляя ее исчезать при закрытии.
Также полезно знать, что при изменении xml все изменения выполняются в коде надстройки VBA. будет потеряно и наоборот ... Вот почему хорошо позаботиться о закрытии другого в тот момент, когда вы что-то измените. При необходимости я могу опубликовать ссылку на такую надстройку, которая уже сделана, но я хотел бы верить, что ее легко создать самостоятельно.
Это способ создания новой вкладки ленты. Но есть и другие способы. Когда я найду время, я постараюсь сделать это только в VBA. Практически, вы должны прочитать все подпрограммы, которые вам нужны для вызова на новой вкладке, затем разархивировать файл Excel, создать или изменить файл XML, чтобы вызвать подпрограммы и повторно сжать файл ...