我有一个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
如果无法做到这一点,除密码外还有其他保护方法吗?