我有一个vba表格。我想知道是否有办法让它只在一台计算机上运行,这样如果有人想要复制它,就不能在另一台机器上运行它。我想也许我们可以使用计算机的mac地址作为安全模式。
任何?
编辑:从miroxlav's answer实施示例:
Const AllowedName As String = "CEB-L1-7440236"
Sub UserForm_click()
If Environ$("COMPUTERNAME") <> AllowedName Then
MsgBox ("Not authorized.")
Exit Sub
End If
If vbYes <> MsgBox("Launch the macro?", vbYesNo) Then Exit Sub
'--start of code what macro actually does
'....
'....
'....
'--end of code what macro actually does
MsgBox ("Finsihed.")
End Sub
答案 0 :(得分:1)
也许您想要将宏锁定到用户名而不是计算机名称(因此授权用户可以在任何计算机上使用它),但它就在您身上。
' computer name
? Environ$("COMPUTERNAME")
' alternative: user name
? Application.UserName
示例 - 宏模块顶部的插入Const
行和If
宏行后面的EndIf
... Sub
:
Const AllowedName As String = "abcd"
Sub UserForm_click()
If Environ$("COMPUTERNAME") <> AllowedName Then
MsgBox ("Not authorized.")
Exit Sub
End If
'--keep your original code here--
End Sub
但是使用命令行可以相对容易地规避这个:
SET COMPUTERNAME=abcd
一旦有人知道abcd
是运行宏所需的正确计算机名称。也许更喜欢用户名检查。相关代码行将更改为:
If Application.UserName <> AllowedName Then
当然,您也可以使用VBA获取计算机的MAC地址,只需搜索“mac address vba”,有很多例子。