Excel多人共享


哈嘍,大家好!在日常工作中,工作表經常會被多人編輯,為此,我們往往需要為不同的人設置不同的查看權限,以實現工作表的分級保密。下面分享一種用VBA設置權限的方法,它擁有高逼格的用戶登錄界面,以及完善的分級保密機制,趕緊來看看吧!

提到“多人運動”,你一定以為小編一言不合就開車。你錯了!作為一個正經的Excel教程作者,小編說的多人運動,指的是同一個Excel表格經常需要由多人編輯,供多人使用。

Excel中的多人運動,往往需要賦予不同的人不同的查看權限,從而做到分級保密。簡單地通過文件保護不能區分權限,而通過簡單地隱藏工作表又太容易被取消,形同虛設!為此,小編深夜不睡,YY了一個VBA授權查閱套路,相信同學們看完一定會由衷嘆一句:666!

 

驚了!每天按時下班的男同事,私下竟用Excel搞「多人運動」!
 
 

第一步:建立權限表

 

賦予不同角色不同的查看權限是“多人運動”表格的重頭戲,我們通過建立權限表來實現這一功能。從權限表第三行開始,我們需要將工作簿中的所有工作表名稱依次填寫;而從第二列開始的每一列,則用於填寫每個角色的用戶名、密碼和對應的權限(用是否表示)。由此,我們可以自由添加工作表和查看角色,不受初始設置的限制。詳見下表。

 

驚了!每天按時下班的男同事,私下竟用Excel搞「多人運動」!
 
 

PS:建立權限表后,我們需要將文件保存為啟用宏的工作簿,文件類型為.xlsm。

 

驚了!每天按時下班的男同事,私下竟用Excel搞「多人運動」!
 
 

 

第二步:創建窗體

 

通過窗體驗證用戶權限是“多人運動”表格的門面,它讓這套表的逼格瞬間提升了好幾個檔次有木有。如此裝逼必備老少皆宜的窗體,該如何創建呢?

 

1. 按Alt+F11,或者點擊開發工具中的Visual Basic按鈕,打開VBA窗口。

 

2. 點擊【插入】–【用戶窗體】,在彈出的界面中繪制兩個標簽,分別為用戶名和密碼,同時插入兩個文本框和兩個命令按鈕(取消和確定)。具體插入方式和Excel工作表中插入形狀無異,此處不再贅述。

 

驚了!每天按時下班的男同事,私下竟用Excel搞「多人運動」!
 
 

第三步:按鈕代碼

 

VBA代碼是這套“多人運動”表格的靈魂,表格之所以能夠實現酷炫的分權功能,全在於這寥寥數語!所以,拿走不謝!

具體操作如下:

1. 雙擊窗體中的“確定”按鈕,將下述代碼粘貼到VBA代碼窗口中即可。該段代碼可以實現單擊“確定”按鈕,即啟動校驗用戶密碼並將對應的表格顯示出來的功能。

Private Sub CommandButton1_Click()

Dim j, i As Integer

maxr = Application.CountA(Sheets("權限表").Range("A:A"))

maxc = Application.CountA(Sheets("權限表").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("權限表").Cells(1, i)

k = Worksheets("權限表").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("權限表").Cells(j, i) = "是" Then

Sheets(j - 2).Visible = xlSheetVisible

Else

Sheets(j - 2).Visible = xlSheetVeryHidden

End If

Next j

If Sheets("權限表").Visible = xlSheetVisible Then

pw = "excelinexcel"

Sheets("權限表").Unprotect Password = pw

Cells.Select

Selection.EntireColumn.Hidden = False

End If

Exit Sub

End If

Next i

MsgBox "用戶名或密碼錯誤!"

End Sub

2.雙擊窗體中的“取消”按鈕,同樣粘貼下述VBA代碼。該段代碼功能很簡單,即退出Excel。

Private Sub CommandButton2_Click()

Application.DisplayAlerts = False

Unload Me

Application.Visible = True

Application.Quit

Application.EnableEvents = False

End Sub

 

3. 在兩段代碼的下方,粘貼以下VBA代碼,用於防止用戶通過關閉窗體入侵。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode <> 1 Then Cancel = True

End Sub

 

4. 雙擊對象窗口中的ThisWorkbook,將下方代碼粘貼到代碼窗口中去。這兩段代碼實現了打開工作簿即彈出窗體開始驗證,並保護和隱藏工作表行列,避免用戶通過禁用宏來越權查看。

工作簿打開事件代碼:

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 <> "權限表" Then

sht.Visible = xlSheetVeryHidden

Else

sht.Select

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

 

工作簿關閉事件代碼

Private Sub Workbook_Open()

Application.DisplayAlerts = False

Application.EnableCancelKey = xlDisabled

Application.Visible = False

UserForm1.Show

End Sub

 

5. 保護VBA工程,確保用戶無法刪除、查看或修改。

操作步驟:

點擊【工具】-【VBAProject屬性】,彈出【VBAProject-工程屬性】對話框,選擇【保護】選項卡,輸入【查看工程屬性的密碼】,點擊【確定】即可。

 

驚了!每天按時下班的男同事,私下竟用Excel搞「多人運動」!
 
 

完成以上操作步驟,一套完美的多人運動表格就搞定了,車也就開完了。此時關閉Excel再次打開即可體驗多人運動的快感,隨文附上演示作品,快拿去把玩把玩吧!最后,以一段打油詩結束今天的分享,下次再見吧!

 

多人運動有是非,

一不小心就被黑。

學它幾句VBA,

再也不怕把鍋背。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM