使用受保护的VBA项目获取CodeName - Excel(VBA)

时间:2017-09-13 13:20:11

标签: excel-vba automation password-protection vba excel

我有一个UDF:

Function SheetFromCodeName(aName As String, Optional WB As Workbook) As Worksheet
    If WB Is Nothing Then Set WB = ThisWorkbook
    With WB
        Set SheetFromCodeName = .Sheets(.VBProject.VBComponents(aName).Properties("Index"))
    End With
End Function

通过此代码调用:

Set TargetAnalysis = SheetFromCodeName(AnalysisSheetCodeName)

我的VBA项目受密码保护,因此这行会导致错误,我必须取消保护用户不允许的VBA项目。

有办法(解决方法):

  • 取消保护VBA项目

  • 做我的东西

  • 再次保护它而不关闭并打开工作簿

类似于:

Sub Foo()
  Dim passKey As String
  passKey = "123"
  ActiveSheet.Unprotect passKey

  // Foo-Related stuff here

  ActiveSheet.Protect passKey, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
End Sub

如果无法做到这一点,除密码外还有其他保护方法吗?

0 个答案:

没有答案