Работа из 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

А так выглядит макрос, заполняющий таблицу телефонных номеров в АТС UNIT:

Sub test_UNIT()
    ' макрос подключается через Telnet к АТС UNIT TS-004
    ' и заполняет данными нужную таблицу
    Dim ATS As Telnet_Equipment: Set ATS = UNIT
    PrintEquipmentResponses = True
 
    If Not ATS.Connection.Logon Then    ' пытаемся подключиться к оборудованию
        ATS.Connection.Disconnect
        MsgBox "Не удалось подключиться к UNIT TS-004", vbCritical, "Ошибка соединения"
        Exit Sub
    End If
 
    ' если выполнение кода дошло до этого места - значит, подключение прошло удачно
    Debug.Print Now, "Подключение к UNIT TS-004 выполнено"
 
    Dim ExecAnswers As Collection: Set ExecAnswers = New Collection
    Dim cell As Range, ra As Range: Application.ScreenUpdating = False
    Set ra = Range([A1], Range("A" & Rows.count).End(xlUp))
 
    ' добавляем команды, которые необходимо будет выполнить
    ATS.Commands.AddCommand "428", "*Делайте ваш выбор*", ""
 
    For Each cell In ra.Cells    ' перебираем все ячейки в первом столбце

        ATS.Commands.AddCommand "3", "*Enter - выход*", ""
        ATS.Commands.AddCommand cell.Text, "*2. - длина номера меньше или равна*", _
                                "Неприемлемо! Будьте аккуратнее!"
        ATS.Commands.AddCommand "0", "*F. - на анализатор номера*", ""
        ATS.Commands.AddCommand "4", "*номер глобального внешнего выхода*", ""
        ATS.Commands.AddCommand "20", "*С какой цифры номера (начина с 1-й) :*", ""
        ATS.Commands.AddCommand "1", "*Делайте ваш выбор*", ""
        ATS.Commands.AddCommand "5e", "*>*", ""
 
    Next cell
 
    ATS.Commands.AddCommand "0", "*Делайте ваш выбор*", ""
    ATS.Commands.AddCommand "5", "*Enter - выход*", ""
    ATS.Commands.AddCommand "33", "*", ""
 
    ' выполняем все команды в порядке их записи
    ATS.Commands.ExecuteAll ExecAnswers
    ATS.Commands.ClearItems    ' необязательно, если не будут добавляться новые команды

    ATS.Connection.Disconnect    ' отключаемся
End Sub

Вложения:
telnet.xls171 КБ

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
         __  __  _       _      ____    ___ 
__ _ \ \/ / | | | | __ | _ \ |_ _|
/ _` | \ / | | | |/ / | |_) | | |
| (_| | / \ | |___ | < | __/ | |
\__, | /_/\_\ |_____| |_|\_\ |_| |___|
|___/
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.