Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Узнать серийный номер флешки через VBA
 
Объединил оба метода, правда он выводит строку содержащую список номеров USB дисков разделенных точка запятой и пробелом
Код
Function USBDiskSerial()
Dim wmiDiskDrive, wmiDiskDrives, строка, serial, i
    On Error Resume Next 'если ошибка продолжаем
    Set wmiDiskDrives = GetObject("winmgmts:").InstancesOf("Win32_DiskDrive")    'получаем диски
    i = 0 'обнуляем счетчик
    For Each wmiDiskDrive In wmiDiskDrives    'побежали по дискам
        If wmiDiskDrive.InterfaceType = "USB" Then    'если диск USB
            serial = Replace(Mid(wmiDiskDrive.PnPDeviceID, InStrRev(wmiDiskDrive.PnPDeviceID, "\") + 1), "&0", "") 'получаем только серийный номер
            If Not serial = vbNullString Then строка = строка & IIf(строка <> vbNullString, "; ", vbNullString) & serial 'добавляем его в конец строки
            i = i + 1 'счетчику прибавляем 1
        End If
    Next
    If i <> 0 Then 'если счетчик не равен 0
        USBDiskSerial = строка 'присваиваем строку
    Else
        USBDiskSerial = vbNullString 'иначе пустая строка
    End If
End Function

но получить массив из него просто: массив = Split (USBDiskSerial, "; ")

ну и проверить смонтирована ли нужная флешка, если даже смонтировано много флешек тоже легко:

Код
Sub test()
    If InStr(1, USBDiskSerial, "102315A74FD79E") > 0 Then Debug.Print "Флешка установлена" ' "102315A74FD79E" - серийный номер флешки
End Sub
Изменено: rustym - 06.01.2023 13:49:57
Страницы: 1
Наверх