作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的工作簿有一些非常隐藏的工作表 (xlSheetVeryHidden
),因为我不希望最终用户看到这些工作表中的信息。
但是,令我惊讶的是,使用这种方法非常弱,因为任何最终用户都可以从另一个工作簿运行以下代码并查看主文件上的所有隐藏工作表。
Sub make_visible()
Dim wb As Workbook: Set wb = Workbooks("Test") ‘name of the main file
Dim sh As Worksheet
For Each sh In wb.Sheets
sh.Visible = xlSheetVisible
Next
End Sub
因此,我需要隔离我的工作簿并防止在其他工作簿上找到的任何宏影响我的主工作簿。
最佳答案
您可以保护工作簿结构,以防止用户添加/删除/隐藏/取消隐藏工作表。
您可以在“审阅”功能区选项卡的 Excel 界面中手动执行此操作:
或者,您可以通过以下方式以编程方式执行此操作:
'*******************************************************************************
'Protect the Structure of a given Book
'Returns TRUE if the Book is passworded with the provided pass otherwise FALSE
'*******************************************************************************
Public Function ProtectBookStructure(ByVal book As Workbook _
, ByVal pass As String) As Boolean
If book.ProtectStructure Then
If UnprotectBookStructure(book, pass) Then
'Previous password was the same or empty. Protect with new password
ProtectBookStructure = ProtectBookStructure(book, pass)
Else
'Book is protected with a different password
ProtectBookStructure = False
End If
Else
On Error Resume Next
book.Protect Password:=pass, Structure:=True
On Error GoTo 0
ProtectBookStructure = book.ProtectStructure
End If
End Function
'*******************************************************************************
'Unprotect the Structure of a given Book
'Returns TRUE if successful or FALSE if not
'*******************************************************************************
Public Function UnprotectBookStructure(ByVal book As Workbook _
, ByVal pass As String) As Boolean
If book.ProtectStructure Then
On Error Resume Next
book.Unprotect pass
On Error GoTo 0
End If
UnprotectBookStructure = Not book.ProtectStructure
End Function
上述方法可以这样调用:
ProtectBookStructure ThisWorkbook, "simplePassword"
UnprotectBookStructure ThisWorkbook, "simplePassword"
或者您可以使用它们的返回值来检查保护/取消保护是否成功。
.xls
中轻松“破解”。格式,然后简单地删除它(不提示输入密码)。同样适用于工作表。此外,蛮力 VBA 宏可以在旧版本的 Excel 上实现相同的目标。此外,可以编辑内部文件(在 Excel 文件存档下)以删除密码 DPB=..
\xl\vbaProject.bin\PROJECT 关于excel - 通过使用宏防止 ThisWorkbook 中的隐藏工作表可见并从另一个工作簿运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72506102/
我是一名优秀的程序员,十分优秀!