说明网
电脑网络 1 个回答

如何使用VBA获取计算机标识并限制Excel工作簿仅在指定的两台设备上打开?

肥龙KY 提问者

发布于 2026-10-27

问题补充

通过VBA读取计算机名或硬件标识,在Workbook_Open事件中比对预设的允许列表,若不匹配则关闭工作簿,从而实现仅允许指定设备打开。

1 个回答

按发布时间排序
paul2014 回答者

回答于 2026-10-27

可通过VBA在工作簿打开时获取当前计算机标识,并与预设的合法设备列表进行比对,不匹配则自动关闭文件。

实现步骤

  1. 获取计算机标识:使用 Environ("COMPUTERNAME") 获取计算机名,或通过WMI查询硬盘序列号、MAC地址等硬件信息作为唯一标识。
  2. 编写验证代码:按 Alt+F11 打开VBA编辑器,在 ThisWorkbook 模块的 Workbook_Open 事件中添加判断逻辑。
  3. 设置允许列表:将两台目标设备的标识写入数组或隐藏单元格中。
  4. 执行限制操作:若当前标识不在列表中,弹出提示并使用 ThisWorkbook.Close SaveChanges:=False 关闭文件。

示例代码(基于计算机名)

Private Sub Workbook_Open()
    Dim allowedPCs As Variant
    Dim currentPC As String
    Dim i As Long
    Dim isAllowed As Boolean
    
    allowedPCs = Array("PC_NAME_1", "PC_NAME_2")
    currentPC = Environ("COMPUTERNAME")
    isAllowed = False
    
    For i = LBound(allowedPCs) To UBound(allowedPCs)
        If StrComp(currentPC, allowedPCs(i), vbTextCompare) = 0 Then
            isAllowed = True
            Exit For
        End If
    Next i
    
    If Not isAllowed Then
        MsgBox "此设备未授权,文件即将关闭。", vbCritical
        ThisWorkbook.Close SaveChanges:=False
    End If
End Sub

适用条件

  • 适用于内部小范围分发的Excel文件管控。
  • 需启用宏才能生效,用户必须允许运行VBA代码。

常见误区

  • 安全性不足:VBA保护可被破解,禁用宏即可绕过此限制,不能作为高安全级别的防护手段。
  • 标识变更:计算机名可由用户自行修改,若依赖计算机名作为标识,改名后将导致无法打开;硬件标识相对稳定但获取方式更复杂。
  • 误锁风险:若两台授权设备均不可用,文件将无法打开,建议预留管理员恢复机制。

内容由网友提供,仅供参考。