Computer >> 컴퓨터 >  >> 문제 해결 >> 컴퓨터 유지 보수

간단한 Excel VBA 스크립트를 사용하여 모든 PC 정보를 보는 방법

컴퓨터의 CPU 또는 메모리 세부정보, 일련번호 또는 모델 번호, 설치된 소프트웨어 버전을 알아야 하지만 어디에서 찾아야 할지 잘 모르셨나요? Excel의 간단한 코드만 있으면 Windows PC 정보의 전체 라이브러리를 추출할 수 있습니다.

사실이라고 하기에는 너무 좋은 것 같나요? 글쎄, 당신이 그것을 사용하는 방법을 안다면 그것은 Windows입니다.

손이 조금 더러워져야 할 수도 있지만 이 기사에서는 필요한 모든 코드와 Excel에 넣고 작동하게 하는 방법을 제공합니다. 작업을 마치면 Excel 시트를 열 때마다 컴퓨터 시스템에 대해 알고 싶었던 모든 것을 알려 주는 Excel 시트를 갖게 됩니다.

이 기능은 Office 무료 평가판을 통해 얻을 수 있는 데스크톱 버전의 Excel에서만 작동합니다.

WMI의 마법

Microsoft 운영 체제를 실행하는 모든 컴퓨터에서 WMI(Windows Management Instrumentation)라는 강력한 확장 세트에 액세스할 수 있습니다. 이 확장은 컴퓨터, 운영 체제 및 설치된 컴퓨터에 대한 정보 및 사양에 액세스할 수 있는 매우 강력하고 광범위한 방법을 제공합니다. 소프트웨어.

간단한 Excel VBA 스크립트를 사용하여 모든 PC 정보를 보는 방법

무엇보다도 WMI는 거의 모든 Microsoft Office 제품에서 사용할 수 있는 VBA와 같은 프로그래밍 언어에서 액세스할 수 있습니다.

자동 스프레드시트 설정

먼저 새 Excel 통합 문서를 만들고 MyComputerInfo.xlsm과 같은 이름으로 지정합니다. (매크로 사용 가능). 그것을 열고 Sheet1을 건너뛰고 다음 11개 시트의 이름을 다음과 같이 바꿉니다.

  • 네트워크
  • 논리 디스크
  • 프로세서
  • 물리적 메모리
  • 비디오 컨트롤러
  • 온보드 장치
  • 운영 체제
  • 프린터
  • 소프트웨어
  • 계정
  • 서비스

여기에는 모든 컴퓨터 세부 정보가 저장되며 이 Excel 스프레드시트를 열 때마다 업데이트됩니다.

간단한 Excel VBA 스크립트를 사용하여 모든 PC 정보를 보는 방법

다음으로 개발자로 이동합니다. 메뉴 항목 및 컨트롤 아래 섹션 클릭 코드 보기 .

간단한 Excel VBA 스크립트를 사용하여 모든 PC 정보를 보는 방법

개발자 메뉴 항목이 표시되지 않으면 파일 >을 클릭합니다. 옵션 > 리본 사용자 지정 , 다음에서 명령 선택 변경 모든 탭 드롭다운 , 개발자 선택 추가>>를 누릅니다. 버튼을 눌러 사용자 지정 리본 쪽에 추가합니다. 추가한 후 해당 측면의 개발자 확인란이 선택되어 있는지 확인하십시오.

간단한 Excel VBA 스크립트를 사용하여 모든 PC 정보를 보는 방법

VBA 코드 편집기에 들어가면 아래 스크립트를 모듈에 추가하기만 하면 됩니다. 이 스크립트는 모든 어려운 작업을 수행합니다. 이 코드를 직접 작성할 필요는 없으며 아래와 같이 복사하여 붙여넣기만 하면 됩니다.

다음 섹션의 코드를 사용하여 복사 및 붙여넣기를 마치면 시트를 로드할 코드를 조금 더 추가하기만 하면 됩니다.

자, 복사하여 붙여넣을 준비가 되었습니까? 해보자.

WMI 모듈 구축

이 코드는 Beyond Excel이라는 환상적인 Google 사이트 리소스에서 영감을 얻었습니다. 표시된 예는 컴퓨터의 모든 네트워크 정보를 Excel 프로그래밍 환경의 디버깅 영역으로 전달하는 WMI()라는 서브루틴입니다.

물론 여기서는 별로 도움이 되지 않으므로 이 가이드의 첫 번째 단계에서 만든 시트 중 하나에 모든 세부 정보를 출력하도록 코드를 수정했습니다.

코딩 탐색 영역에는 모듈이라는 섹션도 표시됩니다. 및 Module1이라는 구성 요소 . 이것을 두 번 클릭하여 엽니다. Modules 폴더가 표시되지 않으면 삽입을 확장합니다. 메뉴에서 모듈을 선택합니다. .

간단한 Excel VBA 스크립트를 사용하여 모든 PC 정보를 보는 방법

이 영역은 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

완료되면 다음과 같이 표시됩니다.

간단한 Excel VBA 스크립트를 사용하여 모든 PC 정보를 보는 방법

다음 코드 붙여넣기 방금 만든 줄 아래 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()".
  • "OnBoardDevices" 시트에 대한 "OnBoardWMI()".
  • "프린터" 시트에 대한 "PrinterWMI()".
  • 운영 체제 시트에 대한 "OperatingWMI()".
  • "소프트웨어" 시트에 대한 "SoftwareWMI()".
  • "서비스" 시트에 대한 "ServicesWMI()".

컴퓨터에 대한 이 정보에 액세스하는 데 사용해야 하는 특수 "Win32_" 개체는 다음과 같습니다.

  • Win32_NetworkAdapterConfiguration - 모든 네트워크 구성 설정
  • Win32_LogicalDisk - 용량과 여유 공간이 있는 디스크.
  • Win32_Processor - CPU 사양
  • Win32_PhysicalMemoryArray - RAM/설치된 메모리 크기
  • Win32_VideoController - 그래픽 어댑터 및 설정
  • Win32_OnBoardDevice - 마더보드 장치
  • Win32_OperatingSystem - 일련 번호가 있는 Windows 버전
  • WIn32_Printer - 설치된 프린터
  • Win32_제품 - 설치된 소프트웨어
  • Win32_BaseService - 서비스의 경로 및 파일 이름과 함께 모든 PC에서 실행 중인(또는 중지된) 서비스를 나열합니다.

Module1에서 각 기능을 복사/붙여넣기 및 조정 완료 코드 영역. 완료되면 이 가이드의 다음 섹션으로 이동합니다.

VB 보기에서 코드를 저장하는 것을 잊지 마십시오! 처음에 통합 문서를 .xls로 저장한 경우 파일 형식, Excel은 이제 .xlsm과 같은 매크로 지원 파일 형식을 사용하도록 요청합니다. .

자동으로 통합 문서 로드

이제 강력한 기능을 모두 만들었으므로 통합 문서를 열 때마다 실행하는 일만 남았습니다. 이 작업은 정말 쉽습니다.

왼쪽 개체 브라우저의 Microsoft Excel 개체 아래 , ThisWorkbook이 표시되어야 합니다. . 해당 개체를 두 번 클릭하여 엽니다.

간단한 Excel VBA 스크립트를 사용하여 모든 PC 정보를 보는 방법

코드 영역 상단에 두 개의 드롭다운 상자가 있습니다. 왼쪽 상자를 통합 문서로 변경합니다. 열기 .

간단한 Excel VBA 스크립트를 사용하여 모든 PC 정보를 보는 방법

Private Sub Workbook_Open()이라는 함수가 자동으로 생성된 것을 볼 수 있습니다. .

여기에 다음 코드 줄을 입력합니다. 따라서 기능은 다음과 같습니다.

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

이제 통합 문서를 열 때마다 새로 생성된 각 함수가 호출되고 컴퓨터에서 모든 데이터를 가져와 적절한 시트에 로드합니다.

작동하는 모습을 보려면 코드를 저장하고 코드 창을 닫고 통합 문서를 저장하고 닫습니다. 방금 닫은 파일을 다시 열면 모든 시트에 컴퓨터에 대한 방대한 양의 데이터가 들어 있음을 알 수 있습니다.

통합 문서에는 보안상의 이유로 비활성화할 수 있는 매크로가 포함되어 있으므로 콘텐츠 활성화를 클릭해야 할 수 있습니다. 수집할 데이터는 시트 상단에 있습니다.

경고 - 많은 양의 데이터를 수집하므로 파일을 처음 열 때 로드될 때까지 몇 분 정도 기다려야 합니다.

컴퓨터 정보 수집

이를 위해 WMI를 사용할 때 놀라운 점은 위의 데이터가 빙산의 일각에 불과하다는 것입니다. 컴퓨터 시스템의 모든 측면에 대한 정보가 포함된 WMI 클래스가 수백 개 더 있습니다.

모험심이 강하고 이 작업에서 한 단계 더 나아가고 싶다면 통합 문서의 첫 번째 시트를 대시보드로 전환하고 다른 시트의 데이터를 사용하여 해당 대시보드를 제공할 수 있습니다.

결론은 이 새로운 도구를 사용하면 대부분의 IT 전문가가 컴퓨터 시스템에 대해 알고 있는 것보다 더 많은 정보를 수집하고 표시할 수 있으며, 그보다 훨씬 짧은 시간에 수행할 수 있다는 것입니다. 동일한 전문가가 제어판과 관리 영역을 뒤져 세부 정보를 검색하는 데 시간을 보냅니다.

이와 같은 도구를 만들고 사용하는 자신을 보고 있습니까? VBA 프로그래머이고 WMI 클래스를 사용해 본 적이 있습니까? 아래 댓글 섹션에서 자신의 경험과 아이디어를 공유하세요!

이미지 제공:Adriano Castelli(Shutterstock.com), Mclek(Shutterstock)