Как просмотреть всю информацию о вашем ПК, используя простой скрипт VBA Excel

Вам когда-нибудь нужно было знать сведения о процессоре или памяти вашего компьютера, серийный номер или номер модели или версии установленного программного обеспечения, но вы не знали, где искать? С помощью небольшого количества простого кода в Excel вы можете извлечь целую библиотеку информации о вашем ПК с Windows

,

Звучит слишком хорошо, чтобы быть правдой? Ну, это Windows, если вы знаете, как ее использовать.

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

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

,

Магия WMI

На любом компьютере под управлением операционной системы Microsoft у вас есть доступ к мощному набору расширений, называемому инструментарием управления Windows (WMI), который предоставляет вам очень мощный и обширный метод для доступа к информации и характеристикам вашего компьютера, операционной системы.

и установленное программное обеспечение.

wmiwindows

Лучше всего, WMI доступен

из языков программирования, таких как VBA

Доступно практически во всех продуктах Microsoft Office.

Настройка вашей автоматической таблицы

Сначала создайте новую книгу Excel и назовите ее как MyComputerInfo.XLSM (Макрос включен). Откройте его, пропустите Sheet1 и переименуйте следующие 11 листов следующим образом:

  • сеть
  • LogicalDisk
  • процессор
  • Физическая память
  • Видео контроллер
  • OnBoardDevices
  • Операционная система
  • принтер
  • Программного обеспечения
  • Счета
  • Сервисы

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

wmi1

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

wmi2

Если вы не видите пункт меню «Разработчик», нажмите Файл> Варианты> Настроить ленту, изменить команды выбора из выпадающего списка на Все вкладки, Выбрать разработчик и нажмите Добавить >> кнопку, чтобы добавить его на стороне заказной ленты. Убедитесь, что флажок «Разработчик» на этой стороне установлен, как только вы добавите его.

wmi3

Как только вы окажетесь внутри редактора кода VBA

все, что вам нужно сделать, это добавить сценарии ниже в модуль. Эти сценарии сделают всю тяжелую работу. Вам не нужно писать этот код самостоятельно, просто скопируйте и вставьте его, как показано ниже.

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

Хорошо, готов копировать и вставлять? Давай доберемся до этого.

Сборка ваших модулей WMI

Источником вдохновения для этого кода является фантастический ресурс Google Sites под названием Beyond Excel. В показанном примере есть подпрограмма WMI (), которая передает всю информацию о сети вашего компьютера в область отладки среды программирования Excel.

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

В области навигации по кодированию вы также увидите раздел «Модули» и компонент «Модуль1». Дважды щелкните по нему, чтобы открыть его. Если вы не видите папку «Модули», разверните Вставить из меню и выберите модуль.

wmi5

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

Разместите следующие строки в самой верхней части окна кода.

Public oWMISrvEx As Object 'SWbemServicesEx
Public oWMIObjSet As Object 'SWbemServicesObjectSet
Public oWMIObjEx As Object 'SWbemObjectEx
Public oWMIProp As Object 'SWbemProperty
Public sWQL As String 'WQL Statement
Public n

Это должно выглядеть так, когда вы закончите:

wmi5

Вставить следующий код в Module1 под строками, которые вы только что создали:

Sub NetworkWMI()
sWQL = "Select * From Win32_NetworkAdapterConfiguration"
Set oWMISrvEx = GetObject("winmgmts:root/CIMV2")
Set oWMIObjSet = oWMISrvEx.ExecQuery(sWQL)
intRow = 2
strRow = Str(intRow)
ThisWorkbook.Sheets("Network").Range("A1").Value = "Name"
ThisWorkbook.Sheets("Network").Cells(1, 1).Font.Bold = True
ThisWorkbook.Sheets("Network").Range("B1").Value = "Value"
ThisWorkbook.Sheets("Network").Cells(1, 2).Font.Bold = True
For Each oWMIObjEx In oWMIObjSet
For Each oWMIProp In oWMIObjEx.Properties_
If Not IsNull(oWMIProp.Value) Then
If IsArray(oWMIProp.Value) Then
For n = LBound(oWMIProp.Value) To UBound(oWMIProp.Value)
Debug.Print oWMIProp.Name & "(" & n & ")", oWMIProp.Value(n)
ThisWorkbook.Sheets("Network").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).Value = oWMIProp.Value(n)
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).HorizontalAlignment = xlLeft
intRow = intRow + 1
strRow = Str(intRow)
Next
Else
ThisWorkbook.Sheets("Network").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).Value = oWMIProp.Value
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).HorizontalAlignment = xlLeft
intRow = intRow + 1
strRow = Str(intRow)
End If
End If
Next
'End If
Next
End Sub

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

Например, затем вы должны скопировать этот код выше для NetworkWMI (), вставить его в конец этого кода, а затем заменить «NetworkWMI ()» на «LogicalDiskWMI ()»

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

Изменить это:

sWQL = "Select * From Win32_NetworkAdapterConfiguration"

К этому:

sWQL = "Select * From Win32_LogicalDisk"

Измените эти четыре строки:

ThisWorkbook.Sheets("Network").Range("A1").Value = "Name"
ThisWorkbook.Sheets("Network").Cells(1, 1).Font.Bold = True
ThisWorkbook.Sheets("Network").Range("B1").Value = "Value"
ThisWorkbook.Sheets("Network").Cells(1, 2).Font.Bold = True

К этому:

ThisWorkbook.Sheets("LogicalDisk").Range("A1").Value = "Name"
ThisWorkbook.Sheets("LogicalDisk").Cells(1, 1).Font.Bold = True
ThisWorkbook.Sheets("LogicalDisk").Range("B1").Value = "Value"
ThisWorkbook.Sheets("LogicalDisk").Cells(1, 2).Font.Bold = True

Измените эти две строки:

ThisWorkbook.Sheets("Network").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).Value = oWMIProp.Value(n)

К этому:

ThisWorkbook.Sheets("LogicalDisk").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("LogicalDisk").Range("B" & Trim(strRow)).Value = oWMIProp.Value(n)

И эти три строки:

ThisWorkbook.Sheets("Network").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).Value = oWMIProp.Value
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).HorizontalAlignment = xlLeft

К этому:

ThisWorkbook.Sheets("LogicalDisk").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("LogicalDisk").Range("B" & Trim(strRow)).Value = oWMIProp.Value
ThisWorkbook.Sheets("LogicalDisk").Range("B" & Trim(strRow)).HorizontalAlignment = xlLeft

Теперь вы почти закончили!

Повторите вышеуказанное для каждой вкладки в вашей книге. Функции будут следующими:

  • «ProcessorWMI ()» для листа «Процессор».
  • «PhysicalMemWMI ()» для листа «Физическая память».
  • «VideoControlWMI ()» для листа «Видеоконтроллер».
  • «OnBoardWMI ()» для листа «OnBoardDevices».
  • «PrinterWMI ()» для листа «Принтер».
  • «OperatingWMI ()» для листа операционной системы.
  • «SoftwareWMI ()» для листа «Программное обеспечение».
  • «ServicesWMI ()» для листа «Услуги».

Специальные объекты «Win32_», которые необходимо использовать для доступа к этой информации о вашем компьютере:

  • Win32_NetworkAdapterConfiguration — все параметры конфигурации вашей сети
  • Win32_LogicalDisk — диски с емкостями и свободным пространством.
  • Win32_Processor — характеристики процессора
  • Win32_PhysicalMemoryArray — объем ОЗУ / установленная память
  • Win32_VideoController — графический адаптер и настройки
  • Win32_OnBoardDevice — материнские платы
  • Win32_OperatingSystem — какая версия Windows с серийным номером
  • WIn32_Printer — Установленные принтеры
  • Win32_Product — Установленные программы
  • Win32_BaseService — список служб, запущенных (или остановленных) на любом ПК, а также путь службы и имя файла.

Завершите копирование / вставку и настройку каждой из этих функций в Module1 область кода. Когда вы закончите, перейдите к следующему разделу этого руководства.

Не забудьте сохранить свой код в представлении VB! Если вы изначально сохранили свою книгу с типом файла .xls, Excel теперь попросит вас использовать тип файла с поддержкой макросов, например .xlsm.

Автоматическая загрузка рабочей книги

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

В браузере левого объекта, под Объекты Microsoft Excel, Тебе следует увидеть ThisWorkbook. Дважды щелкните по этому объекту, чтобы открыть его.

wmi6

В верхней части области кода есть два раскрывающихся списка, замените левую на рабочая тетрадь и право на открыто.

wmi7

Вы увидите автоматически сгенерированную функцию под названием Private Sub Workbook_Open ().

Внутри здесь введите следующие строки кода так что функция выглядит так:

Private Sub Workbook_Open()
NetworkWMI
LogicalDiskWMI
ProcessorWMI
PhysicalMemWMI
VideoControlWMI
OnBoardWMI
PrinterWMI
SoftwareWMI
OperatingWMI
ServicesWMI
End Sub

Теперь, каждый раз, когда вы открываете книгу, каждая из вновь созданных функций будет вызываться, извлекайте все данные.

с компьютера и загрузите его в соответствующий лист.

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

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

Предупреждение — он собирает много данных, поэтому подождите несколько минут, пока он загрузится, когда вы впервые откроете файл.

Сбор компьютерной информации

Удивительная вещь об использовании WMI для этого заключается в том, что приведенные выше данные являются лишь верхушкой айсберга. Существуют сотни доступных классов WMI, содержащих информацию о каждом аспекте вашей компьютерной системы.

Если вы были предприимчивы и хотели пойти дальше, вы могли бы превратить первый лист рабочей книги в панель инструментов

и использовать данные с других листов для подачи на эту панель.

Суть в том, что с помощью этого нового инструмента вы сможете собирать и отображать больше информации, чем большинство ИТ-экспертов

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

Вы видите себя строящим и использующим такой инструмент? Вы программист VBA?

а вы когда-нибудь использовали классы WMI? Поделитесь своим собственным опытом и идеями в разделе комментариев ниже!

Авторы изображения: Адриано Кастелли через Shutterstock.com, Mclek через Shutterstock

Ссылка на основную публикацию
Adblock
detector