Computer >> คอมพิวเตอร์ >  >> การแก้ไขปัญหา >> การบำรุงรักษาคอมพิวเตอร์

วิธีดูข้อมูลพีซีทั้งหมดของคุณโดยใช้สคริปต์ Excel VBA อย่างง่าย

คุณเคยต้องการทราบรายละเอียด CPU หรือหน่วยความจำของคอมพิวเตอร์ หมายเลขซีเรียลหรือรุ่น หรือเวอร์ชันซอฟต์แวร์ที่ติดตั้ง แต่ไม่แน่ใจว่าจะดูจากที่ใด เพียงใช้โค้ดง่ายๆ ใน Excel เพียงเล็กน้อย คุณก็สามารถดึงข้อมูลไลบรารีทั้งหมดของข้อมูลพีซีที่ใช้ Windows ได้

ฟังดูดีเกินไปที่จะเป็นจริง? นั่นคือ Windows ถ้าคุณรู้วิธีใช้งาน

คุณอาจจะต้องทำให้มือของคุณสกปรกเล็กน้อย แต่ในบทความนี้ เราจะให้รหัสทั้งหมดที่คุณต้องการ และวิธีใส่ลงใน Excel และทำให้มันใช้งานได้ เมื่อเสร็จแล้ว คุณจะมีแผ่นงาน Excel ที่ทุกครั้งที่คุณเปิดขึ้นมา จะบอกคุณทุกอย่างที่คุณอยากรู้เกี่ยวกับระบบคอมพิวเตอร์ของคุณ

โปรดทราบว่าการดำเนินการนี้จะใช้ได้กับ Excel เวอร์ชันเดสก์ท็อปเท่านั้น ซึ่งคุณสามารถทดลองใช้ Office ได้ฟรี

ความมหัศจรรย์ของ WMI

ในคอมพิวเตอร์ทุกเครื่องที่ใช้ระบบปฏิบัติการ Microsoft คุณสามารถเข้าถึงชุดส่วนขยายที่มีประสิทธิภาพซึ่งเรียกว่า Windows Management Instrumentation (WMI) ซึ่งให้วิธีการที่มีประสิทธิภาพและครอบคลุมในการเข้าถึงข้อมูลและข้อกำหนดเกี่ยวกับคอมพิวเตอร์ ระบบปฏิบัติการ และติดตั้ง ซอฟต์แวร์

วิธีดูข้อมูลพีซีทั้งหมดของคุณโดยใช้สคริปต์ Excel VBA อย่างง่าย

เหนือสิ่งอื่นใด WMI สามารถเข้าถึงได้จากภาษาการเขียนโปรแกรม เช่น VBA ซึ่งมีอยู่ในผลิตภัณฑ์ Microsoft Office เกือบทั้งหมด

การตั้งค่าสเปรดชีตอัตโนมัติของคุณ

ขั้นแรก ให้สร้างเวิร์กบุ๊ก Excel ใหม่และเรียกมันว่า MyComputerInfo.xlsm (เปิดใช้งานมาโคร) เปิดขึ้นมา ข้าม Sheet1 และเปลี่ยนชื่อ 11 แผ่นถัดไปดังนี้:

  • เครือข่าย
  • LogicalDisk
  • โปรเซสเซอร์
  • หน่วยความจำกายภาพ
  • ตัวควบคุมวิดีโอ
  • อุปกรณ์ออนบอร์ด
  • ระบบปฏิบัติการ
  • เครื่องพิมพ์
  • ซอฟต์แวร์
  • บัญชี
  • บริการ

ข้อมูลเหล่านี้จะเก็บรายละเอียดคอมพิวเตอร์ของคุณทั้งหมด และจะได้รับการอัปเดตทุกครั้งที่คุณเปิดสเปรดชีต Excel นี้

วิธีดูข้อมูลพีซีทั้งหมดของคุณโดยใช้สคริปต์ Excel VBA อย่างง่าย

ถัดไป ไปที่ นักพัฒนา รายการเมนูและภายใต้ การควบคุม ส่วนคลิก ดูรหัส .

วิธีดูข้อมูลพีซีทั้งหมดของคุณโดยใช้สคริปต์ Excel VBA อย่างง่าย

หากคุณไม่เห็นรายการเมนูนักพัฒนา ให้คลิกที่ ไฟล์ > ตัวเลือก > ปรับแต่งริบบิ้น , เปลี่ยน เลือกคำสั่งจาก เลื่อนลงไปที่ แท็บทั้งหมด ให้เลือก นักพัฒนา แล้วกดปุ่ม เพิ่ม>> ปุ่มเพื่อเพิ่มไปยังด้าน Ribbon ที่กำหนดเอง ตรวจสอบให้แน่ใจว่าได้เลือกช่องกาเครื่องหมายผู้พัฒนาที่ด้านนั้นเมื่อคุณเพิ่มเข้าไปแล้ว

วิธีดูข้อมูลพีซีทั้งหมดของคุณโดยใช้สคริปต์ Excel VBA อย่างง่าย

เมื่อคุณอยู่ในโปรแกรมแก้ไขโค้ด VBA แล้ว สิ่งที่คุณต้องทำคือเพิ่มสคริปต์ด้านล่างลงในโมดูล สคริปต์เหล่านี้จะทำทุกอย่าง คุณไม่จำเป็นต้องเขียนโค้ดนี้ด้วยตัวเอง เพียงแค่คัดลอกและวางตามที่แสดงด้านล่าง

เมื่อคุณคัดลอกและวางโดยใช้โค้ดในส่วนถัดไปเสร็จแล้ว สิ่งที่คุณต้องทำคือเพิ่มโค้ดอีกเล็กน้อยเพื่อโหลดชีตของคุณ เท่านี้ก็เรียบร้อย

โอเค พร้อมคัดลอกและวางหรือยัง มาเริ่มกันเลย

การสร้างโมดูล WMI ของคุณ

แรงบันดาลใจสำหรับโค้ดนี้มาจากแหล่งข้อมูล Google Sites ที่ยอดเยี่ยมที่เรียกว่า Beyond Excel ตัวอย่างที่แสดงมีรูทีนย่อยที่เรียกว่า WMI() ซึ่งส่งข้อมูลเครือข่ายทั้งหมดของคอมพิวเตอร์ของคุณไปยังพื้นที่การดีบักของสภาพแวดล้อมการเขียนโปรแกรม Excel

แน่นอนว่ามันไม่ได้ช่วยอะไรเรามากนัก ดังนั้นฉันได้แก้ไขโค้ดเพื่อส่งรายละเอียดทั้งหมดไปยังชีตที่คุณสร้างในขั้นตอนแรกของคู่มือนี้แทน

ในพื้นที่การนำทางการเข้ารหัส คุณจะเห็นส่วนที่เรียกว่า โมดูล และส่วนประกอบภายใต้ชื่อ Module1 . ดับเบิลคลิกที่สิ่งนี้เพื่อเปิด หากคุณไม่เห็นโฟลเดอร์โมดูล ให้ขยาย แทรก จากเมนูและเลือก โมดูล .

วิธีดูข้อมูลพีซีทั้งหมดของคุณโดยใช้สคริปต์ Excel VBA อย่างง่าย

บริเวณนี้เป็นที่ที่รูทีนย่อยทั้งหมดจะใช้ 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 อย่างง่าย

วาง รหัสต่อไปนี้ ลงใน 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()" สำหรับแผ่นงาน "Physical Memory"
  • "VideoControlWMI()" สำหรับแผ่นงาน "ตัวควบคุมวิดีโอ"
  • "OnBoardWMI()" สำหรับแผ่นงาน "OnBoardDevices"
  • "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_Product - ซอฟต์แวร์ที่ติดตั้ง
  • Win32_BaseService - แสดงรายการบริการที่ทำงานอยู่ (หรือหยุดทำงาน) บนพีซีเครื่องใดก็ได้ พร้อมกับพาธของบริการและชื่อไฟล์

คัดลอก/วางและปรับแต่งฟังก์ชันแต่ละอย่างให้เสร็จใน Module1 พื้นที่ของรหัส เมื่อเสร็จแล้ว ให้ไปยังส่วนถัดไปของคู่มือนี้

อย่าลืมบันทึกรหัสของคุณในมุมมอง VB! หากคุณบันทึกเวิร์กบุ๊กครั้งแรกด้วย .xls ประเภทไฟล์ ตอนนี้ Excel จะขอให้คุณใช้ประเภทไฟล์ที่เปิดใช้งานมาโคร เช่น .xlsm .

กำลังโหลดสมุดงานโดยอัตโนมัติ

เมื่อคุณสร้างฟังก์ชันอันทรงพลังเหล่านี้เสร็จแล้ว เหลือเพียงเรียกใช้ทุกครั้งที่เปิดเวิร์กบุ๊ก การทำเช่นนี้เป็นเรื่องง่ายมาก

ในเบราว์เซอร์ออบเจ็กต์ด้านซ้าย ภายใต้ Microsoft Excel Objects คุณควรเห็น ThisWorkbook . ดับเบิลคลิกที่วัตถุนั้นเพื่อเปิด

วิธีดูข้อมูลพีซีทั้งหมดของคุณโดยใช้สคริปต์ Excel VBA อย่างง่าย

ที่ด้านบนของพื้นที่รหัส มีสองช่องแบบเลื่อนลง ให้เปลี่ยนช่องด้านซ้ายเป็น สมุดงาน และอันที่ถูกต้องเพื่อ เปิด .

วิธีดูข้อมูลพีซีทั้งหมดของคุณโดยใช้สคริปต์ Excel VBA อย่างง่าย

คุณจะเห็นฟังก์ชันที่สร้างขึ้นโดยอัตโนมัติเรียกว่า Private Sub Workbook_Open() .

ภายในนี้ พิมพ์ โค้ดต่อไปนี้ ดังนั้นฟังก์ชันจะมีลักษณะดังนี้:

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

ตอนนี้ ทุกครั้งที่คุณเปิดสมุดงาน ฟังก์ชันที่สร้างขึ้นใหม่แต่ละรายการของคุณจะถูกเรียก ดึงข้อมูลทั้งหมดจากคอมพิวเตอร์ และโหลดลงในแผ่นงานที่เหมาะสม

หากต้องการดูการทำงานจริง ให้บันทึกรหัส ปิดหน้าต่างรหัส บันทึกเวิร์กบุ๊ก และปิดด้วย เปิดไฟล์ที่คุณเพิ่งปิดไปอีกครั้ง แล้วคุณจะพบว่าทุกแผ่นมีข้อมูลเกี่ยวกับคอมพิวเตอร์ของคุณเป็นจำนวนมาก

เนื่องจากสมุดงานมีมาโครซึ่งสามารถปิดใช้งานได้ด้วยเหตุผลด้านความปลอดภัย คุณอาจต้องคลิกเปิดใช้งานเนื้อหา ที่ด้านบนของชีตเพื่อเก็บข้อมูล

คำเตือน - รวบรวมข้อมูลจำนวนมาก ดังนั้นควรรอสักครู่ก่อนที่จะโหลดเมื่อคุณเปิดไฟล์เป็นครั้งแรก

รวบรวมข้อมูลคอมพิวเตอร์

สิ่งที่น่าทึ่งเกี่ยวกับการใช้ WMI สำหรับสิ่งนี้ก็คือ ข้อมูลข้างต้นเป็นเพียงส่วนเล็กๆ ของภูเขาน้ำแข็งเท่านั้น มีคลาส WMI อีกหลายร้อยคลาสที่มีข้อมูลเกี่ยวกับทุกแง่มุมของระบบคอมพิวเตอร์ของคุณ

หากคุณชอบการผจญภัยและต้องการก้าวไปอีกขั้น คุณสามารถเปลี่ยนแผ่นงานแรกเป็นแดชบอร์ด และใช้ข้อมูลจากแผ่นงานอื่นเพื่อป้อนแดชบอร์ดนั้นได้

สิ่งสำคัญที่สุดคือการใช้เครื่องมือใหม่นี้ คุณจะสามารถรวบรวมและแสดงข้อมูลมากกว่าที่ผู้เชี่ยวชาญด้านไอทีส่วนใหญ่รู้ว่ามีอยู่เกี่ยวกับระบบคอมพิวเตอร์ และคุณสามารถทำได้ในเวลาเพียงเสี้ยววินาที ผู้เชี่ยวชาญคนเดียวกันใช้เวลาในการขุดค้นผ่านแผงควบคุมและพื้นที่บริหารเพื่อค้นหารายละเอียดเหล่านั้น

คุณเห็นตัวเองกำลังสร้างและใช้เครื่องมือแบบนี้หรือไม่? คุณเป็นโปรแกรมเมอร์ VBA และเคยใช้คลาส WMI หรือไม่ แบ่งปันประสบการณ์และแนวคิดของคุณในส่วนความคิดเห็นด้านล่าง!

เครดิตรูปภาพ:Adriano Castelli ผ่าน Shutterstock.com, Mclek ทาง Shutterstock