具有密码保护功能的Excel Run Macro按钮

时间:2019-07-17 08:59:55

标签: excel vba

我的工作簿受密码保护,由用于输入的未锁定单元格和用于PDF打印的ane按钮组成。由于工作表的密码保护,PDF打印按钮不起作用。

我已经尝试了以下早期问题和解答。却说我输入的密码是错误的(!)

Macros don't work when sheet is protected. Running macro returns run-time error 1004

Sub ButtonClick()

UnprotectAll

'Some stuff here

ProtectAll

End Sub

Private Const yourPassword As String = "ThePassWord"

Sub UnprotectAll()
    Dim sh As Worksheet
    For Each sh In ActiveWorkbook.Worksheets
        sh.Unprotect Password:=yourPassword
    Next sh
End Sub

Sub ProtectAll()
    Dim sh As Worksheet
    For Each sh In ActiveWorkbook.Worksheets
        sh.Protect Password:=yourPassword
    Next sh
End Sub

我明白了

  

错误“ 1004”。
  您提供的密码不正确。

1 个答案:

答案 0 :(得分:0)

  1. 请确保您将Option Explicit用作每个模块和工作表代码中的第一行!这样可以确保您不会遇到未声明的局部范围变量yourPassword,该变量随后为空。

    我建议始终激活Option Explicit:在VBA编辑器中,转到工具选项 Require Variable Declaration

  2. 请确保您使用密码取消(手动)保护所有工作表。

  3. 在模块中将所需的新密码定义为常量

    Private Const yourPassword As String = "ThePassWord"
    
  4. 将此常量用于您的.Protect / .Unprotect

    sh.Protect Password:=yourPassword
    
  5. 然后再次运行您的代码。