作者:乔山办公网日期:
返回目录:excel表格制作
进入VBA,双击thisworkbook对象,复制以下代码:
Private Sub Workbook_Open()
Dim Sht As Worksheet, PW As String
'利用循环语句将除了Sheet1外的所有工作表隐藏,这样防止有人通过禁用VBA来绕过验证7a64e59b9ee7ad94333程序而看到文件,Sheet1为一个空的工作表
For Each Sht In ThisWorkbook.Worksheets
If Sht.Name <> "Sheet1" Then Sht.Visible = xlSheetHidden
Next
'以下开始验证
PW = InputBox("请输入创建人身份证号:", "登录验证")
If PW <> "XXXXXXXXXXXXXXXXXX" Then
'复制以上代码后,请用实际的身份证号替代上面的XXXXXXXXXXXXXXXXXX
ThisWorkbook.Close SaveChanges:=False '如果输入不符,就退出工作薄
Else
'如果输入相符,就恢复被隐藏工作表的全部显示
For Each Sht In ThisWorkbook.Worksheets
Sht.Visible = xlSheetVisible
Next
End If
End Sub
结果如下图:
语句可以zd写,不过一般都会失败,专因为默认是不允许访问属VBA对象的,示例代码:
Set Wb = Nothing
MyPth = "xxx.xls"
Set Wb = GetObject(MyPth)
With Wb.VBProject.VBComponents.Item("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
End With
Wb.Close True
这个只能用VBA的
给你个例子吧,注意需要在Workbook Open、Sheet selectionchange 、Sheet Change三处使用代码
只要你对文件具有编辑权限就不存在你以什么方式登陆电脑的问题。
编辑权限都有什么权限?读,写/改写,遍历文件列表,不具有删除,完全控制等权限。
这些对你的文件起不到做用。
所以A区B区已破。
再说模块和ThisWorkbook。
我自己在编写代码时,时常会放到ThisWorkbook里面e799bee5baa6e997aee7ad94e58685e5aeb9333。
标准模块,也就是我们利用“插入-
模块”得到的“模块1”,“模块2”,这些标准模块除了auto_open等一些自动事件之外,没有自己独特的方法和事件。在标准模块中声明的Public公有变量,公有过程可以直接被其他所有模块访问和调用。
比如,我有一个代码是处理sheet1表里面的数据,那么这个代码就直接可以放在sheet1模块中即可。而我有一个代码要用到Workbook_open这样的事件,那么这个事件肯定要放在Thisworkbook模块中。所以代码在什么模块中写,就在于你需要用什么方法和事件。
通常,一些公共的方法我们可以放在标准模块中。自定义函数必须放在标准模块中。
所以你问题的内容具体是放在哪里都可以,不是必须的,所以模块和ThisWorkbook的问题已破。
所以你猜想的问题,不好意思全都没中。
根据你的所说分析,应该是此电脑本身的宏安全权限有关,你可以从这方面入手。
毕竟我没有你的环境,测试起来有难度。