В рассматриваемом примере Lesha – это имя пользователя, который создал документ. Очевидно, что в результате внесения соответствующих изменений в код макроса форму создаваемого отчета можно корректировать по своему усмотрению.
Рис. 3.32. Документ Word, созданный на основе данных таблицы Excel
Создание списка панелей инструментов и контекстных меню
При необходимости можно сформировать на рабочем листе список доступных панелей инструментов и контекстных меню. Для этого достаточно написать (в стандартном модуле редактора VBA) и запустить на выполнение макрос, код которого приведен в листинге 3.86.
Sub ListOfMenues()
Dim intRow As Integer ' Хранит текущую строку
Dim cbrBar As CommandBar
' Очистка всех ячеек текущего листа
Cells.Clear
intRow = 1 ' Начинаем запись с первой строки
' Просматриваем список панелей инструментов и меню _
и записываем информацию о каждом элементе в таблицу
For Each cbrBar In CommandBars
' Порядковый номер
Cells(intRow, 1) = cbrBar.Index
' Название
Cells(intRow, 2) = cbrBar.Name
' Тип
Select Case cbrBar.Type
Case msoBarTypeNormal
Cells(intRow, 3) = «Панель инструментов»
Case msoBarTypeMenuBar
Cells(intRow, 3) = «Строка меню»
Case msoBarTypePopup
Cells(intRow, 3) = «Контекстное меню»
End Select
' Встроенный элемент или созданный пользователем
Cells(intRow, 4) = cbrBar.BuiltIn
' Переходим на следующую строку
intRow = intRow + 1
Next
End Sub
Результат выполнения данного макроса (после написания кода он будет доступен в окне списка макросов) показан на рис. 3.33.
Рис. 3.33. Фрагмент списка панелей инструментов и меню
Данный список выводится на активном рабочем листе.
Создание списка пунктов главного меню Excel
Подобным образом можно сформировать список подменю и команд, входящих в главное меню (которое существовало в более ранних версиях программы). Для этого в стандартном модуле VBA необходимо написать следующий код (листинг 3.87).
Sub ListOfMenues()
Dim intRow As Integer ' Текущая строка, куда идет запись
Dim cbrcMenu As CommandBarControl ' Главное меню
Dim cbrcSubMenu As CommandBarControl ' Подменю
Dim cbrcSubSubMenu As CommandBarControl ' Подменю в подменю
' Очищаем ячейки текущего листа
Cells.Clear
' Начинаем запись с первой строки
intRow = 1
' Просматриваем все элементы строки меню
On Error Resume Next ' Игнорируем ошибки
For Each cbrcMenu In CommandBars(1).Controls
' Просматриваем элементы выпадающего меню cbrcMenu
For Each cbrcSubMenu In cbrcMenu.Controls
' Просматриваем элементы подменю cbrcSubMenu
For Each cbrcSubSubMenu In cbrcSubMenu.Controls
' Выводим название главного меню
Cells(intRow, 1) = cbrcMenu.Caption
' Выводим название подменю
Cells(intRow, 2) = cbrcSubMenu.Caption
' Выводим название вложенного подменю
Cells(intRow, 3) = cbrcSubSubMenu.Caption
' Переходим на следующую строку
intRow = intRow + 1
Next cbrcSubSubMenu
Next cbrcSubMenu
Next cbrcMenu
End Sub
После запуска макроса ListOfMenues (этот макрос появится в окне выбора макросов после написания приведенного выше кода) список подменю и команд главного меню будет сформирован на текущем рабочем листе.