- Вопрос или проблема
- Ответ или решение
- 1. Введение в макросы Excel
- 2. Установка целей
- 3. Использование VBA для создания пользовательской вкладки
- Шаг 1: Открытие редактора VBA
- Шаг 2: Вставка модуля
- Шаг 3: Написание кода для создания вкладки
- 4. Переименование вкладки
- 5. Увеличение кнопок
- 6. Сохранение и тестирование
- Заключение
Вопрос или проблема
Я видел макро-шаблоны, созданные командой разработчиков, с которой я работаю, и попытался сделать свою собственную вкладку. Основная проблема в том, что новая вкладка не позволяет мне переименовать её, и я не могу увеличить размеры кнопок.
Я искал файл: officecustomuieditorfiles, который упоминался ранее. Когда я его искал, мне направили на этот сайт.
https://bettersolutions.com/vba/ribbon/custom-ui-editor.htm
и эта информация о загрузке после этого утверждает, что Windows 11 больше не поддерживает его.
Поскольку мне не разрешено загружать дополнительное программное обеспечение на работе:
Кто-нибудь знает, как создать новую пользовательскую вкладку макросов, которую я смогу переименовать и сделать кнопки макросов большими?
Любая информация или указания, куда мне можно обратиться, будут очень признательны.
альдо – вот копия моей версии, которую я смог создать:
http://www.vbaexpress.com/kb/getarticle.php?kb_id=427
Private Const COMMANDBAR_NAME As String = "Menu"
Private Const BUTTON_CAPTION As String = "Macros" ' Открыть
Private Sub Workbook_Open()
'https://learn.microsoft.com/en-us/office/vba/api/office.commandbarcontrols.add
'https://bettersolutions.com/vba/enumerations/msocontroltype.htm
'https://github.com/areed1192/sigma_coding_youtube/blob/master/vba/vba-advanced/commandbar-object/CommandbarControls%20Object.bas
'https://stackoverflow.com/questions/61918089/adding-macro-to-add-ins-tab-custom-toolbars
'франкен старт
Dim objCommandBar As CommandBar
Dim objButton As CommandBarButton
' Попытка получить Commandbar (если он существует)
On Error Resume Next
Set objCommandBar = Me.CommandBars(COMMANDBAR_NAME)
On Error GoTo 0
If (objCommandBar Is Nothing) Then
' Создайте командную панель
On Error Resume Next
Set objCommandBar = Application.CommandBars.Add(Name:=COMMANDBAR_NAME, Position:=msoBarTop, MenuBar:=False, Temporary:=True)
On Error GoTo 0
'msoBarTypeNormal
'msoBarTypeMenuBar
'msoBarTypePopup
'msoBarTop
'msoBarPopup
' Действительная командная панель?
If (Not objCommandBar Is Nothing) Then
' Добавьте кнопки на командную панель
With objCommandBar
' Добавить кнопку
Set objButton = objCommandBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
' Установите свойства кнопки
With objButton
.Style = msoButtonIconAndCaption
.Caption = "Clear"
.FaceId = 456
.TooltipText = "Clear"
.OnAction = "'" & ThisWorkbook.Name & "'!Clear"
.Height = 100
.Width = 100
End With
Set objButton = objCommandBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
With objButton
.Style = msoButtonIconAndCaption
.Caption = "Combine_DF"
.FaceId = 1774
.TooltipText = "Combine_DF_Reports"
.OnAction = "'" & ThisWorkbook.Name & "'!Combine_DF_Reports"
.Height = 100
.Width = 100
End With
Set objButton = objCommandBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
With objButton
.Style = msoButtonIconAndCaption
.Caption = "Inbound_Reports"
.FaceId = 526
.TooltipText = "Combine_Inbound_Reports"
.OnAction = "'" & ThisWorkbook.Name & "'!Combine_Inbound_Reports"
.Height = 100
.Width = 100
End With
Set objButton = objCommandBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
With objButton
.Style = msoButtonIconAndCaption
.Caption = "Production"
.FaceId = 747
.TooltipText = "Tester Move_Production"
.OnAction = "'" & ThisWorkbook.Name & "'!Move_Production"
.Height = 100
.Width = 100
End With
With Application
.ShowToolTips = True
.LargeButtons = True
.ColorButtons = True
'.Caption = "&Menu" 'название элемента меню
End With
' Показать командную панель
.Position = msoBarTop
.RowIndex = msoBarRowLast
.Visible = True
MsgBox ("Макросы расположены на вкладке меню надстроек")
End With
End If
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next 'в случае, если элемент меню уже был удален
Application.CommandBars("Worksheet Menu Bar").Controls("My Macros").Delete 'удалить элемент меню
On Error Resume Next
' Попытка удалить командную панель iTrade
Call Application.CommandBars(COMMANDBAR_NAME).Delete
' Восстановить обработку ошибок
On Error GoTo 0
On Error Resume Next
' Попытка удалить командную панель iTrade
Call Application.CommandBars(Menu).Delete
On Error GoTo 0
' Восстановить обработку ошибок
On Error Resume Next
' Попытка удалить командную панель iTrade
Call Application.CommandBars(TMenu).Delete
' Восстановить обработку ошибок
On Error GoTo 0
End Sub
Ответ или решение
Создание собственных макро-вкладок в Excel может быть сложной задачей, особенно если вы сталкиваетесь с ограничениями в использовании стороннего программного обеспечения. В данной статье мы рассмотрим подробный процесс создания пользовательской вкладки макросов, а также способы ее переименования и увеличения кнопок.
1. Введение в макросы Excel
Макросы в Excel — это мощный инструмент, позволяющий автоматизировать рутинные задачи. Создание пользовательских вкладок с макросами может значительно упростить доступ к вашим часто используемым функциям.
2. Установка целей
Ваши основные цели:
- Создать новую вкладку с макросами.
- Переименовать эту вкладку.
- Сделать кнопки на вкладке большими.
3. Использование VBA для создания пользовательской вкладки
Для создания вкладки вы можете использовать встроенный редактор Visual Basic for Applications (VBA). Чтобы начать, выполните следующие шаги:
Шаг 1: Открытие редактора VBA
- Откройте Excel.
- Нажмите
Alt + F11
, чтобы открыть редактор VBA.
Шаг 2: Вставка модуля
- В редакторе VBA щелкните правой кнопкой мыши на вашем проекте и выберите
Insert
->Module
. - В этом модуле вы будете писать код для создания новой вкладки.
Шаг 3: Написание кода для создания вкладки
Код, который вы разместите в модуле, будет создавать новую вкладку с макросами. Вы можете использовать ваш предыдущий код как основу, однако небольшие изменения помогут вам добиться желаемого результата. Например:
Private Sub Workbook_Open()
Dim objRibbon As IRibbonUI
Set objRibbon = Application.Ribbon
' Создание новой вкладки
objRibbon.Tabs.Add Name:="Мои Макросы", Position:=0
' Настройка макрокнопок
Call CreateMacroButtons(objRibbon)
End Sub
Private Sub CreateMacroButtons(objRibbon As IRibbonUI)
Dim objButton As RibbonButton
' Пример добавления кнопки
Set objButton = objRibbon.Controls.Add(Type:=msoControlButton)
With objButton
.Caption = "Очистить"
.OnAction = "ВашМакросОчистки"
.Width = 100 ' Ширина кнопки
.Height = 50 ' Высота кнопки
End With
' Продолжите добавлять другие кнопки аналогичным образом
End Sub
4. Переименование вкладки
Для переименования вкладки можно изменить свойство Caption
в вашем коде. Убедитесь, что вы делаете это до того, как вкладка будет добавлена в интерфейс.
5. Увеличение кнопок
Чтобы увеличить кнопки, вы можете задать свойства Width
и Height
, как показано выше. Убедитесь, что вы указываете размеры, которые соответствуют вашим предпочтениям.
6. Сохранение и тестирование
После завершения редактирования кода:
- Закройте редактор VBA.
- Сохраните вашу книгу как
.xlsm
(файл с поддержкой макросов). - Закройте и откройте файл, чтобы протестировать вашу новую вкладку.
Заключение
Создание пользовательской вкладки макросов в Excel — это эффективный способ повышения продуктивности. Следуя вышеописанным шагам, вы сможете создать вкладку, которую сможете переименовать и кастомизировать в соответствии с вашими потребностями, несмотря на ограничения по установке стороннего ПО. Не забывайте регулярно сохранять изменения и тестировать ваши макросы на предмет их работоспособности.