You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在指定VBA代码中添加多个MAC地址,限制Excel仅在对应系统运行

支持多个MAC地址的Excel权限控制VBA代码

嘿,要让你的Excel文件支持多个指定MAC地址访问其实很简单,咱们只需要把允许的MAC地址放到一个数组里,然后检查当前机器的MAC是否在这个列表中就行。下面是修改后的完整代码,还附带了几个实用的小优化:

Public Function notmacaddress() As Boolean
    Dim m As String
    Dim allowedMACs As Variant
    Dim i As Integer
    ' 在这里添加所有允许的MAC地址,直接在数组里追加即可
    allowedMACs = Array("11:11:11:11:11:11", "22:22:34:32:55:23", "34:45:45:33:33:11")
    
    ' 获取当前机器的MAC地址并统一转成大写,避免大小写差异导致匹配失败
    m = UCase(GetMACAddress)
    
    ' 默认设为"不允许访问",找到匹配的MAC则改为"允许"
    notmacaddress = True
    For i = LBound(allowedMACs) To UBound(allowedMACs)
        If UCase(allowedMACs(i)) = m Then
            notmacaddress = False
            Exit For ' 找到匹配后直接退出循环,提升效率
        End If
    Next i
End Function

Function GetMACAddress() As String
    Dim sComputer As String
    Dim oWMIService As Object
    Dim cItems As Object
    Dim oItem As Object
    Dim myMacAddress As String
    sComputer = "."
    Set oWMIService = GetObject("winmgmts:\" & sComputer & "\root\cimv2")
    Set cItems = oWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
    For Each oItem In cItems
        If Not IsNull(oItem.IPAddress) Then
            myMacAddress = oItem.macAddress
            Exit For
        End If
    Next
    ' 返回格式为MM:MM:MM:SS:SS:SS的MAC地址
    GetMACAddress = myMacAddress
End Function

Private Sub Workbook_Open()
    If notmacaddress Then
        ' 添加SaveChanges参数,避免关闭时弹出保存提示
        ThisWorkbook.Close SaveChanges:=False
    End If
End Sub

关键修改和优化说明:

  • 多MAC支持:把原来的单个MAC常量替换成了数组allowedMACs,后续要添加新的允许地址,直接在数组里加逗号和新MAC即可,非常方便。
  • 大小写兼容:用UCase()把获取到的MAC和允许列表里的地址都转成大写,避免因为系统返回的MAC是小写(比如aa:bb:cc)而导致匹配失败的问题。
  • 安全默认逻辑:默认设置为notmacaddress = True(即拒绝访问),只有找到匹配的MAC才改为允许,这样即使数组为空或者遍历出错,也能保证文件不会被未授权的机器打开。
  • 优化关闭体验:在ThisWorkbook.Close里添加了SaveChanges:=False,关闭文件时不会弹出保存提示,让整个权限控制流程更顺畅。

内容的提问来源于stack exchange,提问作者wolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:17:38