Работа с сетью и оборудованием
Макрос предназначен для вывода IP адресов и названий стран, на основании столбца с доменными именами.В прикреплённом файле - 2 способа реализации:1) по доменному имени определяется IP адрес (посредством команды PING - выполнения ICMP запроса), 2) используется только сервис smart-ip.net
|
|||
Public Function Ping(ByVal ComputerName As String) As Boolean ' возвращает TRUE, если пинг прошел Dim oPingResult As Variant For Each oPingResult In GetObject("winmgmts://./root/cimv2").ExecQuery _ ("SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'") If IsObject(oPingResult) Then If oPingResult.StatusCode = 0 Then Ping = True 'Debug.Print "ResponseTime", oPingResult.ResponseTime Exit Function End If End If Next End Function Пример использования: Sub TestPingFunction() If Ping("ComputerName") Then ПутьКПапке = "\\ComputerName\files" If Ping("ya.ru") Then MsgBox "Интернет доступен!" If Not Ping("192.168.0.2") Then MsgBox "Компьютер с IP адресом 192.168.0.2 недоступен в сети!" End Sub
|
|||
Самый простой способ получить IP-адрес машины, зная имя хоста, - применить функцию ResolveAddress: Function ResolveAddress(ByVal ComputerName$) As String ' выполняет ICMP запрос (ping) до адреса ComputerName ' возвращает IP-адрес ComputerName$ Dim oPingResult As Variant: On Error Resume Next For Each oPingResult In GetObject("winmgmts://./root/cimv2").ExecQuery _ ("SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'") If IsObject(oPingResult) Then ResolveAddress = oPingResult.ProtocolAddress Next End Function Использовать функцию можно так: Sub ПримерИспользованияResolveAddress() Debug.Print ResolveAddress("yandex.ru") ' возвращает 87.250.250.11 Debug.Print ResolveAddress("google.com") ' возвращает 209.85.143.99 End Sub Этот код (c функцией ResolveAddress) работает очень быстро (в отличие от приведённого ниже)
|
|||
Программа содержит 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
|
|||
Иногда требуется выложить некоторый файл в общий доступ, и поделиться ссылкой на него.Для автоматизации этой задачи и предназначена функция UploadFile Данная функция принимает в качестве параметра ссылку на файлообменник, и полный путь к загружаемому файлу. Результатом работы функции является ссылка для скачивания загруженного файла. (способ програмного формирования POST-запроса был выбран потому, что не удаётся средствами программы заполнить поле HTMLInputFileElement)
|
|||
Данный код выводит список всех установленных в системе принтеров: Sub ПолучениеСпискаПринтеров() Set AllPrinters = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_Printer", , 48) For Each printer In AllPrinters n = n + 1: Debug.Print "Принтер №" & n & ": " & printer.Name Next Debug.Print "Всего принтеров: " & n End Sub Результат работы макроса:
|
|||
Фунцкия Get_All_IP_Addresses возвращает коллекцию, содержащую все IP-адреса всех сетевых интерфейсов. Пример использования функции: Sub ВыводРезультатов_Get_All_IP_Addresses() For Each IPaddr In Get_All_IP_Addresses txt = txt & IPaddr & vbNewLine Next MsgBox txt, vbInformation, "Список всех IP адресов" End Sub
|
|||
