同一Excel文件如何讓不同人查看的內(nèi)容不同?
?
作者:小花來(lái)源:部落窩教育發(fā)布時(shí)間:2020-05-26 17:35:13點(diǎn)擊:19177
編按:
哈嘍,大家好!在日常工作中,我們常需要同一文件不同權(quán)限的人打開后看到的內(nèi)容不同,怎么做呢?簡(jiǎn)單用文件保護(hù)是無(wú)法實(shí)現(xiàn)的。這時(shí)建立一個(gè)權(quán)限表,用VBA來(lái)管理用戶和密碼,不管有多少人,每個(gè)人都可以根據(jù)自己的權(quán)限查看到不同的內(nèi)容。趕緊來(lái)看看吧!
提到“多人運(yùn)動(dòng)”,你一定以為小花一言不合就開車。你錯(cuò)了!作為一個(gè)正經(jīng)的Excel教程作者,小花說(shuō)的多人運(yùn)動(dòng),指的是同一個(gè)Excel表格經(jīng)常供多人使用。
Excel中的多人運(yùn)動(dòng),往往需要賦予不同的人不同的查看權(quán)限,從而做到分級(jí)保密。簡(jiǎn)單來(lái)說(shuō),就是讓不同職位的人打開同一個(gè)文件看到的內(nèi)容是不同的。怎么做到呢?簡(jiǎn)單的文件保護(hù)功能不能區(qū)分權(quán)限,簡(jiǎn)單地隱藏工作表又太容易被取消,形同虛設(shè)!為此,小花深夜不睡,YY了一個(gè)VBA授權(quán)查閱套路,相信小花瓣看完一定會(huì)由衷嘆一句:666!
第一步:建立權(quán)限表
賦予不同角色不同的查看權(quán)限是“多人運(yùn)動(dòng)”表格的重頭戲,我們通過(guò)建立權(quán)限表來(lái)實(shí)現(xiàn)這一功能。從權(quán)限表第三行開始,我們需要將工作簿中的所有工作表名稱依次填寫;而從第二列開始的每一列,則用于填寫每個(gè)角色的用戶名、密碼和對(duì)應(yīng)的權(quán)限(用是否表示)。由此,我們可以自由添加工作表和查看角色,不受初始設(shè)置的限制。詳見下表。
PS:建立權(quán)限表后,我們需要將文件保存為啟用宏的工作簿,文件類型為.xlsm。
第二步:創(chuàng)建窗體
通過(guò)窗體驗(yàn)證用戶權(quán)限是“多人運(yùn)動(dòng)”表格的門面,它讓這套表的逼格瞬間提升了好幾個(gè)檔次有木有。如此裝逼必備老少皆宜的窗體,該如何創(chuàng)建呢?
1. 按Alt+F11,或者點(diǎn)擊開發(fā)工具中的Visual Basic按鈕,打開VBA窗口。
2. 點(diǎn)擊【插入】–【用戶窗體】,在彈出的界面中繪制兩個(gè)標(biāo)簽,分別為用戶名和密碼,同時(shí)插入兩個(gè)文本框和兩個(gè)命令按鈕(取消和確定)。具體插入方式和Excel工作表中插入形狀無(wú)異,此處不再贅述。
第三步:按鈕代碼
VBA代碼是這套“多人運(yùn)動(dòng)”表格的靈魂,表格之所以能夠?qū)崿F(xiàn)酷炫的分權(quán)功能,全在于這寥寥數(shù)語(yǔ)!所以,拿走不謝!
具體操作如下:
1. 雙擊窗體中的“確定”按鈕,將下述代碼粘貼到VBA代碼窗口中即可。該段代碼可以實(shí)現(xiàn)單擊“確定”按鈕,即啟動(dòng)校驗(yàn)用戶密碼并將對(duì)應(yīng)的表格顯示出來(lái)的功能。
Private Sub CommandButton1_Click()
Dim j, i As Integer
maxr = Application.CountA(Sheets("權(quán)限表").Range("A:A"))
maxc = Application.CountA(Sheets("權(quán)限表").Range("1:1"))
If TextBox1.Value = "" Then MsgBox "用戶名不能為空", vbInformation, "注意": Exit Sub
If TextBox2.Value = "" Then MsgBox "密碼名不能為空", vbInformation, "注意": Exit Sub
For i = 2 To maxc
u = Worksheets("權(quán)限表").Cells(1, i)
k = Worksheets("權(quán)限表").Cells(2, i)
If TextBox1.Text = u And TextBox2.Text = k Then
Unload Me
Application.Visible = True
Application.EnableCancelKey = xlInterrupt
for j=maxr to 3 step -1
ThisWorkbook.Activate
If Sheets("權(quán)限表").Cells(j, i) = "是" Then
Sheets(j - 2).Visible = xlSheetVisible
Else
Sheets(j - 2).Visible = xlSheetVeryHidden
End If
Next j
If Sheets("權(quán)限表").Visible = xlSheetVisible Then
pw = "excelinexcel"
Sheets("權(quán)限表").Unprotect Password = pw
Cells.Select
Selection.EntireColumn.Hidden = False
End If
Exit Sub
End If
Next i
MsgBox "用戶名或密碼錯(cuò)誤!"
End Sub
2.雙擊窗體中的“取消”按鈕,同樣粘貼下述VBA代碼。該段代碼功能很簡(jiǎn)單,即退出Excel。
Private Sub CommandButton2_Click()
Application.DisplayAlerts = False
Unload Me
Application.Visible = True
Application.Quit
Application.EnableEvents = False
End Sub
3. 在兩段代碼的下方,粘貼以下VBA代碼,用于防止用戶通過(guò)關(guān)閉窗體入侵。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode <> 1 Then Cancel = True
End Sub
4. 雙擊對(duì)象窗口中的ThisWorkbook,將下方代碼粘貼到代碼窗口中去。這兩段代碼實(shí)現(xiàn)了打開工作簿即彈出窗體開始驗(yàn)證,并保護(hù)和隱藏工作表行列,避免用戶通過(guò)禁用宏來(lái)越權(quán)查看。
工作簿打開事件代碼:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Sheets(1).Visible = xlSheetVisible
Dim sht As Worksheet
For Each sht In Worksheets
If sht.Name <> "權(quán)限表" Then
sht.Visible = xlSheetVeryHidden
Else
sht.Select
On Error Resume Next
Cells.EntireColumn.Hidden = True
pw = "excelinexcel"
sht.Protect Password = pw
sht.EnableSelection = xlNoSelection
End If
Next
Application.Visible = False
ThisWorkbook.Close savechanges:=True
End Sub
工作簿關(guān)閉事件代碼
Private Sub Workbook_Open()
Application.DisplayAlerts = False
Application.EnableCancelKey = xlDisabled
Application.Visible = False
UserForm1.Show
End Sub
5. 保護(hù)VBA工程,確保用戶無(wú)法刪除、查看或修改。
操作步驟:
點(diǎn)擊【工具】-【VBAProject屬性】,彈出【VBAProject-工程屬性】對(duì)話框,選擇【保護(hù)】選項(xiàng)卡,輸入【查看工程屬性的密碼】,點(diǎn)擊【確定】即可。
完成以上操作步驟,一套完美的多人運(yùn)動(dòng)表格就搞定了,車也就開完了。此時(shí)關(guān)閉Excel再次打開即可體驗(yàn)多人運(yùn)動(dòng)的快感,隨文附上演示作品,快拿去把玩把玩吧!最后,以一段打油詩(shī)結(jié)束今天的分享,下次再見吧!
多人運(yùn)動(dòng)有是非,
一不小心就被黑。
學(xué)它幾句VBA,
再也不怕把鍋背。
本文配套的練習(xí)課件請(qǐng)加入QQ群:1043683754下載。
做Excel高手,快速提升工作效率,部落窩教育《一周Excel直通車》視頻和《Excel極速貫通班》直播課全心為你!
掃下方二維碼關(guān)注公眾號(hào),可隨時(shí)隨地學(xué)習(xí)Excel:
相關(guān)推薦:
Excel常用的加密和破解方式(上)《職場(chǎng)人士最常用的excel密碼保護(hù)和破解方式,趕緊收藏?。ㄉ掀?/span>》
Excel常用的加密和破解方式(下)《職場(chǎng)人士最常用的excel密碼保護(hù)和破解方式,趕緊收藏?。ㄏ缕?/span>》
Excel另類加密方式《輸入密碼才顯示單元格內(nèi)容,這個(gè)表格瞬間高大上!》
加密Excel《Excel有把隱形的保護(hù)鎖,你知道嗎?》
最熱教程
- 像綠皮火車一樣長(zhǎng)像珠穆拉瑪峰一樣高的Excel表怎么操作才方便?
- Power Query實(shí)戰(zhàn):按指定次數(shù)遞增數(shù)據(jù)
- 2019年全網(wǎng)最全—excel提取身份證信息合集?。ńㄗh收藏)-下篇
- 明明沒(méi)有重復(fù),Excel卻判定數(shù)據(jù)重復(fù),這是怎么回事?
- 文本格式的求和,及求和中最容易出現(xiàn)的問(wèn)題解疑
- 致命缺陷:不懂一維表!
- 函數(shù)組合思維,你有嗎?
- 學(xué)會(huì)這2個(gè)公式,整理考勤數(shù)據(jù)只要一分鐘
- 就算被說(shuō)是拍馬屁也成,今天你應(yīng)該這樣發(fā)Excel報(bào)表……
- 如何計(jì)算Excel單元格中的算式,四種求和方法請(qǐng)收好!
最新教程
- 一個(gè)公式搞定空行的動(dòng)態(tài)插入
- 多功能銷售日歷模板制作
- 用正則函數(shù)快速拆分單元格中的同類數(shù)據(jù)
- 用免費(fèi)AI將圖片批量轉(zhuǎn)表格
- 先入先出出入庫(kù)模板中出庫(kù)批次的自動(dòng)匹配
- 用SUBSTITUTE替換法為產(chǎn)品找到最匹配的類別
- SHEETSNAME,一鍵獲得所有工作表名稱完成目錄制作
- 延遲退休落地,快速查詢你上幾年才退休!
- 快速將PDF電子發(fā)票數(shù)據(jù)提取到發(fā)票明細(xì)登記表的方法
- 提取、查找、替換數(shù)據(jù)的王者——REGEXP正則函數(shù)