您現在的位置是:首頁 > 垂釣
《神奇的VBA》程式設計:獲取硬體相關資訊
- 由 神奇的VBA 發表于 垂釣
- 2022-10-18
計算機主機板序列號在什麼
------ 前言------
當學習office辦公軟體的指令碼語言到一定階段後, 我相信很多朋友們會有對自己工作簿做開啟,閱讀或者修改等操作許可權設定的想法。比如帶有指令碼的工作簿發給其它工作組同事或者客戶、供應商的員工使用時,不希望工作簿被某些人開啟,或者只希望工作簿只能被自己開啟,或者不允許刪除某個工作表,或者修改某個單元格值等等等等。保護的思路有很多,什麼常規密碼保護工作簿,隱藏工作表, 鎖定單元格,透過在某個工作表中預設隱藏的單元格值,或者透過預設的單元格區域名稱,或者透過
電腦硬體
資訊等等都可以實現這樣的場景需求。本篇分享如何獲取硬體資訊的示例程式碼
。
如何透過VBA獲取電腦/筆記本的硬體資訊?例如使用下表格式在B列中羅列CPU序列號,計算機名稱,計算機使用者名稱,主機板序列號,C盤序列號,以及網絡卡資訊。
VBA程式碼如下:
Sub 獲取本機資訊()
‘獲取CPU序列號
Set WM = GetObject(“winmgmts:\\。\root\cimv2”)
Set devices = WM。ExecQuery(“Select * From Win32_processor”)
For Each device In devices
ID = device。ProcessorId
Next
[B1] = ID
’獲取計算機名稱和使用者名稱稱
Dim WN As Object
Set WN = CreateObject(“Wscript。Network”)
[B2] = WN。ComputerName
[B3] = WN。UserName
‘獲取主機板序列號
Dim Obj As Object, sn As String
For Each Obj In GetObject(“WinMgmts:”)。InstancesOf(“Win32_BaseBoard”)
sn = Obj。SerialNumber
Next
[B4] = sn
’獲取C盤序列號
[B5] = Format(CreateObject(“Scripting。FileSystemObject”)。GetDrive(“C:”)。SerialNumber)
‘獲取網絡卡
Dim MAC
Set MAC = GetObject(“Winmgmts:”)。InstancesOf(“Win32_NetworkAdapterConfiguration”)
For Each m In MAC
If m。IPEnabled = True Then
[B6] = m。MacAddress
Exit For
End If
Next
’銷燬物件
Set WM = Nothing
Set MAC = Nothing
Set WN = Nothing
End Sub
透過執行上面示例程式碼,即可得出如下輸出結果。
(注意下圖所示硬體資訊已做安全處理,僅做示範)
使用VBA處理職場資料時,寫通用函式
《神奇的VBA》認為
是一個很好的習慣和意識。
這樣便於後續快速重複呼叫,減少程式碼量。針對上面程式碼,
為了更好為我們後續使用,《神奇的VBA》已改寫成通用函式,以便後續複用。程式碼如下:
Function 獲取CPU序列號() As String
Set WM = GetObject(“winmgmts:\\。\root\cimv2”)
Set coldevices = WM。ExecQuery(“Select * From Win32_processor”)
For Each objdevice In coldevices
ID = objdevice。ProcessorId
Next
獲取CPU序列號 = ID
Set WM = Nothing
End Function
Function 獲取計算機名稱() As String
Dim WN As Object
Set WN = CreateObject(“Wscript。Network”)
獲取計算機名稱 = WN。ComputerName
Set WN = Nothing
End Function
Function 獲取使用者名稱稱() As String
Dim WN As Object
Set WN = CreateObject(“Wscript。Network”)
獲取使用者名稱稱 = WN。UserName
Set WN = Nothing
End Function
Function 獲取主機板序列號() As String
Dim Obj As Object, sn As String
For Each Obj In GetObject(“WinMgmts:”)。InstancesOf(“Win32_BaseBoard”)
sn = Obj。SerialNumber
Next
獲取主機板序列號 = sn
End Function
Function 獲取硬碟序列號(chr As String) As String
On Error Resume Next
獲取硬碟序列號 = Format(CreateObject(“Scripting。FileSystemObject”)。GetDrive(chr)。SerialNumber)
End Function
Function 獲取網絡卡資訊() As String
Dim MAC
Dim RLT
Set MAC = GetObject(“Winmgmts:”)。InstancesOf(“Win32_NetworkAdapterConfiguration”)
For Each m In MAC
If m。IPEnabled = True Then
RLT = m。MacAddress
Exit For
End If
Next
獲取網絡卡資訊 = RLT
Set MAC = Nothing
End Function
在工作簿,工作表事件中呼叫上面的硬體資訊函式結合if。。then結構的邏輯判斷語句等就可以有針對性的保護工作簿或者工作表相關操作。如果不知道如何使用事件,不知道CreateObject等方法,以及迴圈遍歷的基礎知識,請查閱《神奇的VBA》外掛學習。
注意本篇程式碼經過初步驗證,可以直接使用,但函式沒有做更多容錯判斷,如果執行錯誤請自行查詢問題。
另外提醒:上面的Fuction函式,放在標準模組後,也可以當做工作表函式在工作表單元格中使用。
#FormatImgID_2#
在《神奇的VBA》外掛中並沒有相關內容的介紹。VBA程式語言最恰當的應用場景是更好的處理職場中的相關資料,而不是實用性和功能性較弱的保護措施。本篇純屬掃盲分享。
更多職場Excel VBA資料程式設計知識(職場牛人必備秘技),可下載安裝使用職場高效達人必備的參考和學習工具《神奇的VBA》,一款嵌入進Excel Ribbon介面,開啟任意Ms Excel工作簿就能隨時參閱和學習Excel VBA程式設計知識的賦能工具。 我還開發了免費的《Power Click》辦公增效外掛,如需要請自由下載安裝。
外掛下載地址複製百度雲盤連結:
連結:https://pan。baidu。com/s/1ACnntUozdWVkqkH_voTIQA
提取碼:ch75
或加入QQ群快速下載:群號:1027517316