Хитрости »
Основные понятия (23)
Сводные таблицы и анализ данных (9)
Графики и диаграммы (5)
Работа с VB проектом (12)
Power BI и Power Query (14)
Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (63)
Разное (38)
Баги и глюки Excel (2)

Как вернуть меню в стиле Excel 2003 в версиях 2007 и старше

С приходом в нашу жизнь нового Excel 2007 в неё также пришли не только свыше миллиона строк, почти неограниченное количество условий условного форматирования и еще куча новых возможностей, но и новый стиль. Притом не просто новый, а совершенно переработанный, незнакомый, неузнаваемый и запутывающий. Кто-то годами пользовался 2003 Excel и настолько привык к его интерфейсу, что новый стиль был воспринят не просто в штыки - многие из этих людей до сих пор пользуются 2003 практически только из-за нежелания переходить на новый стиль.
Тем, кто боится перейти на новый интерфейс только по этой причине, а так же тем, кого мучает ностальгия по прежнему интерфейсу, могу предложить несложный код, который на вкладке "Надстройки" создает ряд меню, повторяющих старый добрый 2003.
Меню в стиле 2003 Excel

Сам код:

Option Explicit
'---------------------------------------------------------------------------------------
' Procedure : MakeMenu2003
' Purpose   : Процедура создания меню в стиле Excel 2003
'---------------------------------------------------------------------------------------
Sub MakeMenu2003()
    Dim arr, cbArr, cbName As String
    Dim cbMenu, cbStandart, cbFormat
    Dim lc As Long
 
    'Удаляем меню, если они уже созданы
    Call Del_Menu
    'создаем массивы для создания меню
    'имена
    cbArr = Array("Меню 2003", "Стандартная 2003", "Форматирование 2003")
    'панель меню
    cbMenu = Array("30002|10", "30003|10", "30004|10", "30005|10", "30006|10", "30007|10", "30011|10", "30009|10", "30022|10", "30177|10", "30010|10")
    'стандартная панель(основные иконки)
    cbStandart = Array("2520|1", "23|1", "3|1", "9004|1", "3738|1", "2521|1", "109|1", "2|1", "7343|1", "21|1", "19|1", "108|1", "128|6", "129|6", "9071|1", "1576|1", "226|13", "210|1", "211|1", "436|1", "1733|4", "30253|10", "984|1")
    'панель форматов
    cbFormat = Array("1728|4", "1731|4", "113|1", "114|1", "115|1", "120|1", "122|1", "121|1", "402|1", "1643|1", "396|1", "397|1", "398|1", "399|1", "3162|1", "3161|1")
    'объединяем в один массив для более простого вызова
    arr = Array(cbMenu, cbStandart, cbFormat)
    For lc = LBound(cbArr) To UBound(cbArr)
        CreateMenu (cbArr(lc)), arr(lc)
    Next lc
End Sub
Function CreateMenu(cbName As String, arr)
  Dim vType, vID, lc As Long
  Dim asSp
  On Error Resume Next
  With Application.CommandBars.Add(cbName, , , True).Controls
        For lc = LBound(arr) To UBound(arr)
            asSp = Split(arr(lc), "|")
            .Add Type:=Val(asSp(1)), ID:=Val(asSp(0))
        Next
  End With
  'Делаем меню видимым
  Application.CommandBars(cbName).Visible = True
End Function
'---------------------------------------------------------------------------------------
' Procedure : Del_Menu2003
' Purpose   : Процедура удаления ранее созданного меню Excel 2003
'---------------------------------------------------------------------------------------
Sub Del_Menu()
    On Error Resume Next
    Dim x
    For Each x In Array("Меню 2003", "Стандартная 2003", "Форматирование 2003")
        Application.CommandBars(x).Delete
    Next
End Sub

Учитывайте, что созданная панель будет существовать даже после закрытия файла и даже после закрытия Excel.
Так же прилагаю файл, в котором можно нажатием кнопок создать меню и удалить. Для тех, кто незнаком с макросами: прежде чем попробовать создать меню с помощью выложенного здесь файла настоятельно рекомендую прочесть эту статью: Почему не работает макрос?

Конечно, это не лучший вариант и если поискать в сети, то можно найти программы, которые так же воссоздают меню в стиле 2003, но почти все они платные.

Скачать пример:

  Tips_All_MakeMenu2003.xls (61,5 KiB, 1 851 скачиваний)


Статья помогла? Поделись ссылкой с друзьями!
  Плейлист   Видеоуроки

Поиск по меткам

Access apple watch Multex Outlook Power Query и Power BI VBA работа в редакторе VBA управление кодами Бесплатные надстройки Дата и время Диаграммы и графики Записки Защита данных Интернет Картинки и объекты Листы и книги Макросы и VBA Надстройки Настройка Печать Поиск данных Политика Конфиденциальности Почта Программы Работа с приложениями Работа с файлами Разработка приложений Сводные таблицы Списки Тренинги и вебинары Финансовые Форматирование Формулы и функции Функции Excel Функции VBA Ячейки и диапазоны акции MulTEx анализ данных баги и глюки в Excel ссылки
Обсуждение: 3 комментария
  1. Alex_ST:

    Дмитрий, я в шоке!
    Попытался "подпилить" макрос так, чтобы он создавал на ленте свою вкладку, а не вставлял группу на вкладку "Надстройки" и на ней - не только выпадающие менюшки, но и нужные мне группы и кнопки в них...
    Оказывается, в этом … Ribbon-интерфейсе объектов, создаваемых на ленте через XML (Tab, Group, Box, …), нет в VBA-модели! Или я просто не сумел к ним обратиться?

    Была у меня задумка макросом вместо не настраиваемых "родных" (встроенных) вкладок TabHome TabInsert TabPageLayoutExcel TabFormulas TabData TabReview TabView TabDeveloper TabAddIns TabPrintPreview сделать их копии, но уже настраиваемые, а не нужные вкладки скрыть, а коллекции "Вкладки" (наверное, Tabs) я в объектной модели не нашёл.
    Получается так, что полного управления интерфейсом в Excel-2010 через VBA нет. Только через XML что ли?

  2. Алексей, как ни прискорбно, но да - добавлять вкладки и управлять ими можно только через XML. VBA модель этого не предусматривает. В будущем Microsoft хочет VBA заменить на VSTO, насколько я знаю. Вот там, возможно, будет подобная возможность.

  3. DOC:

    Добрый день!
    1)Подскажите пожалуйста, как вам удалось закрепить ALT+буквы на кнопках в меню 2003, как я понял, Ексель2010 буквы назначает хаотично при добавлении новой кнопки?
    2) Что такое XML язык или какой то редактор?
    Хотелось бы в этом разобраться, ведь тем кто занимается вводом данных, каждый раз приходится сначала тянутся к мышке, затем "целиться" и только потом активировать нужную команду - за рабочий день "порядочно" набегает излишне потраченного времени и излишних действий.

Поделитесь своим мнением

Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Тренинги

Заказать
Юридическая информация

Использование материалов сайта

Политика Конфиденциальности

ИП Щербаков Дмитрий Валентинович
ОГРНИП: 318502700083307
ИНН: 504013350772

Наши партнеры

Перейти
Перейти

Счетчики

Рейтинг@Mail.ru Яндекс.Метрика
© 2018 Excel для всех   Войти