试图根据网络用户名计算出只有我可以看到工作簿而其他人可以看到用户表单。
这是我到目前为止得到的:
Private Sub Workbook_Open()
Application.Visible = False
UtilitiesReportingTool.Show
End Sub
您需要一些东西来阻止您的用户查看您的工作表 - 这些很容易通过一点知识来破解。
- 创建一个带有大文本的工作表,上面写着"请启用宏">
- 非常隐藏除宏启用表以外的所有工作表。
- 在普通模块中创建这两个过程
Sub StartUp()
Dim wrkSht As Worksheet
If Environ("username") <> "CAES_MATT" Then
Application.Visible = False
UtitlitiesReportingTool.Show
Else
For Each wrkSht In ThisWorkbook.Worksheets
wrkSht.Visible = xlSheetVisible
Next wrkSht
End If
End Sub
Sub ShutDown()
Dim wrkSht As Worksheet
For Each wrkSht In ThisWorkbook.Worksheets
Select Case wrkSht.CodeName
Case "Sheet1" 'This should really be shtMacroEnable or something.
wrkSht.Visible = xlSheetVisible
Case Else
wrkSht.Visible = xlSheetVeryHidden
End Select
Next wrkSht
End Sub
在Workbook_Open
事件中添加以下代码:
Private Sub Workbook_Open()
StartUp
End Sub
在您的UserForm_Terminate事件中添加以下内容:
Private Sub UserForm_Terminate()
Application.Visible = True
ShutDown
End Sub
当您打开工作簿时,如果未启用宏,则只有"启用宏"工作表可见。 启用宏后,将显示窗体,除非是您,在这种情况下,所有工作表都将取消隐藏。
当表单关闭时,除了代号为Sheet1
的工作表之外的所有内容都将被隐藏。
我可能错过了一些东西...回家。