gpt4 book ai didi

excel - 通过使用宏防止 ThisWorkbook 中的隐藏工作表可见并从另一个工作簿运行

转载 作者:行者123 更新时间:2023-12-04 19:45:26 25 4
gpt4 key购买 nike

我的工作簿有一些非常隐藏的工作表 (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
因此,我需要隔离我的工作簿并防止在其他工作簿上找到的任何宏影响我的主工作簿。
感谢所有有用的评论和回答这个安全问题。
还有 ,我锁定了我的 vba 项目,我使用了类似的方法,例如 Unviewable+

最佳答案

您可以保护工作簿结构,以防止用户添加/删除/隐藏/取消隐藏工作表。
您可以在“审阅”功能区选项卡的 Excel 界面中手动执行此操作:
screenshot
或者,您可以通过以下方式以编程方式执行此操作:

'*******************************************************************************
'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"
或者您可以使用它们的返回值来检查保护/取消保护是否成功。
编辑#1
阅读了在 OP 问题下发表的其他评论后,我必须澄清一些事情。
只有通过 File/Info 保护 Excel 文件才能安全:
enter image description here
但是,没有密码,没有人可以使用这种 protected 文件。一旦你给他们密码,那么一切都可以访问,因为:
  • 工作簿保护,正如我在 Review/Protect Workbook 下的初始答案中建议的那样,可以通过将文件保存在旧的 .xls 中轻松“破解”。格式,然后简单地删除它(不提示输入密码)。同样适用于工作表。此外,蛮力 VBA 宏可以在旧版本的 Excel 上实现相同的目标。此外,可以编辑内部文件(在 Excel 文件存档下)以删除密码
  • VBA工程密码可以通过两种方式破解:
  • 如果使用存档器打开文件,则可以编辑 DPB=..\xl\vbaProject.bin\PROJECT
  • 下的条目
  • 通过使用宏通过 Win API
  • Hook 密码对话框

    我在这个答案中提出的建议只会阻止“普通”用户取消隐藏隐藏的工作表,但这并不会阻止更多“高级”用户通过宏从这些工作表中复制信息,而且肯定不会阻止他们破解密码。
    如果您希望这些隐藏工作表的完全安全,那么您应该按照@SolarMike 在评论中的建议将数据移到 Excel 文件之外

    关于excel - 通过使用宏防止 ThisWorkbook 中的隐藏工作表可见并从另一个工作簿运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72506102/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com