如何在打开工作表时,要输入登录账号和密码才能打开

如题所述

用了这么久的Excel,不知道大家对Excel文档的安全问题有没有特别留意。如果想要你的Excel更安全,以下的这些技巧是必备的——
  加密Excel文件
  如果不想让自己的Excel文件被别人查看,最好将其加密:单击“工具”→“选项”,在弹出的“选项”对话框中单击“安全性”选项卡,然后在 “打开权限密码”(只允许读不能做修改)、“修改权限密码”(允可以阅读,也能修改)输入框中输入该文件的打开权限密码及修改权限密码。单击“确定”按钮,在弹出的密码确认窗口中重新输入一遍密码,再单击“确认”,最后点“保存”按钮完成文件加密。下次只有输入正确密码才能打开该文件。
  对单元格进行读写保护
  (1)对输入信息进行有效性检测:首先选定要进行有效性检测的单元格或单元格集合,然后选择“数据”菜单中的“有效性”选项,设置有效条件、显示信息和错误警告来控制输入单元格的信息要符合给定的条件。另外,这一部分设置很有用,如在设计一个Excel时,不允许用户输入负数年龄及负工资等。
  (2)设置锁定属性,以保护存入单元格的内容不能被改写。选定需要锁定的单元格;选择“格式”→“单元格”;在“单元格格式”设置对话框中选择“保护”标签并选中“锁定”;选择“工具”→“保护”→“保护工作表”,设置保护密码,即完成了对单元格的锁定设置。
  保护工作簿
  打开“工具”→“保护”→“保护工作簿”。选定“结构”选项可保护工作簿结构,以免被删除、移动、隐藏、取消隐藏、重命名工作表,并且不可插入新的工作表。选定“窗口”选项则可以保护工作簿窗口不被移动、缩放、隐藏、取消隐藏或关闭。
  保护工作表
  在设置保护工作表前,首先确认要保护的单元格是否处于“锁定”状态,选中并右击单元格,在弹出的菜单中选择“设置单元格格式”,选择“保护”选项卡,确认已选中“锁定”项,在默认状态下,单元格和图形对象均处于锁定状态,此时,如果设置工作表被保护,则相应信息不能修改。保护工作表的方法如下:选择“工具”→“保护”→“保护工作表”,在打开的对话框中有“内容”、“对象”和“方案”三个复选项,如果要防止、修改工作表中的单元格或图表中的数据及其他信息,并防止查看隐藏的数据行、列和公式,则选中“内容”复选框;如果要防止、改变工作表或图表中的图形对象,则应选中“对象”复选框;如果要防止、改变工作表中方案的定义,则应选中“方案”复选框。最后为防止其他用户取消工作表保护,还要在“密码”文本框中输入密码。
  保护共享工作薄
  对要共享的工作薄,如果要对工作薄中的修订进行跟踪,可设置保护共享工作薄,选择“工具”→“保护”→“保护共享工作薄”,选中“以追踪修订方式共享”复选框,如果需要其他用户先提供密码,才能取消共享保护和冲突日志,则需要在“密码”文本框中输入密码,注意,如果工作薄已经处在共享状态,则不能为其设置密码。
  为工作薄设置权限密码
  如果不想其他用户打开工作薄,可设置工作薄打开密码,单击“文件”→“另存为”,单击“工具”菜单上的“常规选项”,在这里可根据不同需要设置两种类型的密码:如果根本不想其他用户打开工作薄,则需在“打开权限密码”文本框中输入密码;如果你只是不想其他用户修改工作薄,但可以打开查看,则需要在“修改权限密码”文本框中输入密码。当然为了保险起见,你可以把两个密码都设置,最好是设置不同的密码内容。
  隐藏公式
  如果不想在共享工作薄后,让其他用户看到并编辑已有公式,可在共享之前,将包含公式的单元格设置为隐藏,并保护工作表。步骤如下:选定要隐藏的公式所在的单元格区域,选择“格式”→“单元格”,单击“保护”选项卡,选中“隐藏”复选框,单击“确定”按钮即可隐藏公式。
  隐藏工作薄
  选择“窗口”→“隐藏”,可以把当前处于活动状态的工作薄隐藏起来,如果要取消隐藏,可选择“窗口”→“取消隐藏”命令,然后在“取消隐藏”窗口中选择相应工作薄即可。
  隐藏工作表
  选择“格式”→“工作表”→“隐藏”,可以把当前的活动工作表隐藏起来,要取消工作表的隐藏时,选择“格式”→“工作表”→“取消隐藏”,然后在“取消隐藏”窗口中选择相应的工作表即可。
  隐藏行或列
  隐藏行或列共有三种方法,这里以行为例:(1)右击要隐藏的行号,在出现的快捷菜单中选择“隐藏”命令。(2)单击需要隐藏行中的任意单元格,然后选择“格式”菜单下的“行|隐藏”命令即可。(3)移动鼠标要隐藏行的右侧,按住左键,通过移动向左移动的方式,将列宽调整为0,这样对应的行号会从工作表中自动消失,起到隐藏效果,要取消隐藏,需要同时选择该行的左右相邻的两行,或者选中整个工作表,然后选择“格式”菜单下的“行|取消隐藏”命令即可。
  隐藏VBA程序
  在使用VBA编写的程序而生成的表格时,由于这些程序都存放模块表中,为了保护这些程序,可以通过VBA编程将工作表对象的Visible属性设置为“xlveryhidden”。
  设置只读方式
  选择“文件”→“另存为”,在该对话框中选中需要设为“建议只读”属性的工作簿文件,然后单击该对话框上的“选项”按钮,打开“保存选项”对话框,选中该对话框中的“建议只读”复选框,然后单击“确定”按钮,再单击“另存为”对话框上的“保存”按钮即可。在“建议只读”方式下,无论何时打开工作簿,Excel总是首先显示出一个提示信息对话框,建议应以只读方式打开工作簿。
  修改扩展名
  修改Excel工作薄的扩展名(把.xls改为其他扩展名),Excel就不认识了,最好是把扩展名改成.dll等系统文件的名称,然后再把文件的属性设置为隐藏,让别人会误以为这是个系统文件,而不敢去碰它,自己要用时再改回来就行了。追问

谢谢!像你所说的这些我都会,不过,我要的是像登录窗体那样的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-02
如何用vba编写一段代码使excel在打开时要输入登录账号和密码才能打开
用VBA制做EXCEL登录系统
时间:2011-8-5 22:36:54 点击:48 次 收藏到:
在工作中可能遇到这种情况,就是有一个录入工作需要多人协同完成,每个人所要录入的部份又不相同,于是就在同一个EXCEL工作簿中建立多个工作表,当某一个人录入时,只打开他需要操作的那个工作表,其他工作表自动隐藏起来,防止被误操作。
我看到网上有不少朋友在找有这个功能的表格,于是就试着做了一个,跟大家分享一下。
注意:由于EXCEL的VBA安全性非常低,网上有很多破解的方法,所以对那些数据安全性要求较高的请不要用这种方法。
一、表格部份
这个工作簿中有多个工作表,分成三类。
第一类:工作簿的第一个工作表,里面没有数据,只用于显示登录窗口,起名为“登录”。由于在VBA代码中要调用这个工作表,在实际使用时,这个名字不要改动。
第二类:工作簿的第二个工作表,里面存储了各登录人员的姓名、登录密码以及各人要操作的工作表(权限),起名为“设置”,这个工作表的名字同样不要修改,里面的数据位置也不要改动。
第三类:工作簿的第三及以后的工作表,这些表都是登录人员要操作的表格,应根据自己的需要设置,我为了介绍方便,给他们起名为“表一”、“表二”、...,可以添加多个,表的名字也可任意。
在做上面这些表时,只要注意“登录”表的名字不要改、“设置”表的名字与数据位置不要改,其他部份可随意。
提示:如果非要改变“登录”表与“设置”表的名字,必须在EXCEL中改名后,把VBA代码中相关的名字也改过来才能正常使用。
二、VBA部份
上面表格部份完成后,就需要做VBA代码了,在EXCEL窗口按ALT+F11调出VBA窗口。
1、登录窗体
在工具栏中按“插入-用户窗体”,添加一个窗体。
将插入的窗体调整到适当大小。
2、代码
在所添加的窗体上双击鼠标,然后把下面代码粘贴进去:
Private Sub CommandButton1_Click()
On Error GoTo 10 '当姓名与密码不对应时,会出现错误,转到10语句处理
Dim n As String
Set sh = Sheets("设置")
na = TextBox1.Text: ps = TextBox2.Text '取得登录窗口中的姓名与密码
If na = "" Or ps = "" Then MsgBox "未输入用户名或密码,不能登录", , "提示": Exit Sub
s = WorksheetFunction.Match(na, sh.[a:a], 0) '查找用户在A列的位置
n = sh.Cells(s, 2) '取出“设置”表中的权限密码,字符型
If n <> ps Then GoTo 10
Call 隐藏表
'检查一下“设置”表的C列及右边各格中的内容,有内容的,说明可以打开内容所指定的工作表
For i = 4 To 255
b = sh.Cells(s, i).Value
If b = 1 And sh.Cells(1, i) <> "" Then '单元格为1时,表示有权限打开这个表,就让它显示出来
Sheets(sh.Cells(1, i).Value).Visible = -1
End If
Next
Unload UserForm1 '退出窗体
Exit Sub
10:
MsgBox "姓名或密码错误,不能登录", , "提示"
End Sub
Sub 隐藏表()
TextBox1.Text = "": TextBox2.Text = ""
For i = 1 To Worksheets.Count
If Sheets(i).Name <> "登录" Then
Sheets(i).Visible = 2
Else
Sheets(i).Visible = -1 '只让“登录”表显示出来
End If
Next
End Sub
Private Sub CommandButton2_Click()
Call 隐藏表
End Sub
Private Sub UserForm_Activate()
'窗体出现在屏幕上的位置
Me.Top = 220
Me.Left = 120
End Sub
代码中都做了注释,看不明白也不影响使用,只要粘贴上就行了。
再用鼠标双击左侧的thisworkbook模块,把下面代码粘贴上去。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call UserForm1.隐藏表
ActiveWorkbook.Save '保存当前工作簿文档
End Sub
Private Sub Workbook_Open()
Call UserForm1.隐藏表
UserForm1.Show '加载登录窗体
End Sub
再用鼠标双击左侧“设置”表模块,把下面代码粘贴上去。
Private Sub Worksheet_Activate()
'将各工作表的名字填入第一行中
For i = 2 To Worksheets.Count
Cells(1, i + 2) = Sheets(i).Name
Next
End Sub
再用鼠标双击左侧“登录”表模块,把下面代码粘贴上去。
最后给VBA加上一个保护密码,防止其他人员改动代码。
按“工具-VBA Project属性”,调出“VBA Project”属性窗口,选“保护”选项卡,按下图设置就行了。
至此就完成了整个制做过程,关闭VBA窗口回到EXCEL窗口,就可以在这个工作簿中添加你要操作的全部工作表了,注意添加的位置在“设置”工作表的右边。
使用时的注意事项:
1、在“登录”工作表中,登录窗体是自动显示的,只要输入姓名、密码正确,按“登录”按钮,就会根据“设置”表中的权限,自动打开该操作者所要操作的工作表,与他无关的表会自动隐藏。
2、当以管理员身份(本例中的“张三”)登录后,只要一打开“设置”工作表,就能自动在D1单元格及右边的各单元格中更新工作表名字。
3、任何操作者在操作完成后,要在“登录”窗体上点击“退出”按钮,以便关闭所操作的工作表。
4、为了保证登录功能正常运行,在打开工作簿时一定要启用宏。另外,为了保证工作簿在关闭时只显示“登录”工作表,会自动将其他表隐藏并保存工作簿。
补充说明:
如果想在登录窗口的密码框不显示“明文”,只显示一串星号“***”,可以用下面方法设置。
打开VBA窗口,用鼠标选中登录窗体的密码文本框textbox2,在左边“属性”窗口中找到passwordChar属性,输入一个星号就行了。
补充2
有朋友提出,在显示登录窗口时,不想手工输入“姓名”,最好用下拉框选择“姓名”,想实现这个功能,只要把登录窗口中的姓名“文本框”删除,换成一个“复合框”,再改一下代码就可以了。
1、改文本框为复合框
2、修改代码
分两步,先把原代码中的所有“TextBox1.Text”替换成“ComboBox1.Text”(提示:可以在VBA窗口中按“编辑-替换”,输入内容后选“全部替换”即可)。
再将原代码中的下面这段:
Private Sub UserForm_Activate()
'窗体出现在屏幕上的位置
Me.Top = 220
Me.Left = 120
End Sub
替换成:
Private Sub UserForm_Activate()
'窗体出现在屏幕上的位置
Me.Top = 220
Me.Left = 120
For i = 2 To Sheets("设置").[a65536].End(xlUp).Row
ComboBox1.AddItem Sheets("设置").Cells(i, 1).Value
Next
End Sub
这样就可以使用了。

详细出处参考:http://www.vlss.com/Article/17085.html
第2个回答  2017-11-13
请问代码写在哪里
相似回答