如何将宏运行到只有一台计算机

时间:2017-06-17 22:35:58

标签: excel vba

我有一个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

1 个答案:

答案 0 :(得分:1)

  1. 将计算机名称嵌入到您的VBA代码中并为其添加测试。
  2. 密码保护代码模块,以便其他人无法查看/修改代码模块。
  3. 也许您想要将宏锁定到用户名而不是计算机名称(因此授权用户可以在任何计算机上使用它),但它就在您身上。

     
    ' 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”,有很多例子。