Макросы VBA Excel — Страница 27

Создание меню для просмотра встроенных в Excel значков панелей инструментов

Меню "Значки" - отображение иконок Excel, и их значений FaceID

Данный код формирует выпадающее меню "Значки" на стандартной панели инструментов:

Данное меню можно использовать для подбора нужной иконки для собственных меню
(чтобы узнать значение FaceID для выбранного значка)

Работа из VBA Excel с оборудованием через Telnet

Программа содержит 4 модуля класса, позволяющие при помощи несложного кода подключаться к различному оборудованию по протоколу Telnet, и выполнять требуемый набор команд.

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

Примерно так можно задать настройки подключения к конкретному оборудованию:

Function UNIT() As Telnet_Equipment
    ' функция возвращает все необходимые настройки для подключения к оборудованию
    ' в ввиде объекта типа Telnet_Equipment
    Set UNIT = New Telnet_Equipment
    With UNIT
        .Name = "АТС UNIT-004"
        .IP = "192.168.64.122"
        .Port = 6701
        .Login = "user"
        .Password = "password"
        .ResponseBeforeLogin = "*004*"
        .ResponseLogonSucceed = "*Делайте ваш выбор*>*"
        .Prompt = "*" & vbNewLine & ">" & vbNewLine
        With .LogonCommands
            .AddCommand "ytermenter", "*Ваше имя >*", "", 2000
            .AddCommand .Equipment.Login, "*Ваш пароль >*", "", 200
            .AddCommand .Equipment.Password, "*Делайте ваш выбор*", "", 1000
        End With
    End With
End Function

Создание копии листа шаблона, и сохранение в виде нового файла

Данная функция формирует (создаёт) новую книгу Excel с одним листом (на основании шаблона - листа sh_template), после чего сохраняет новый файл по пути NewFilename$

Функции для определения нажатых клавиш

Порой требуется определить, нажата ли на клавиатуре определённая клавиша.
К примеру, на одну кнопку на панели инструментов можно "повесить" 2 и более макросов, если есть возможность проверить, удерживались ли клавиши Ctrl и Shift в момент нажатия кнопки запуска макроса.

Для этого можно применить функцию KeyPressed:

Public Function KeyPressed(ByVal VKey As VirtualKeys) As Boolean
    KeyPressed = IIf(GetKeyState(VKey) < 0, True, False)
End Function

Теперь вы можете назначить одной кнопке 2 макроса:

Sub ПроцедураДляЗапускаСПанелиИнструментов()
    If KeyPressed(VK_CONTROL) Then Call Макрос1 Else Call Макрос2
End Sub