自學(xué)資料(Excel VBA)[收集整理10] 66、.用VBA(編程)保護(hù)Excel文檔
VBA(Visual Basic for Application)是Excel應(yīng)用程序中功能非常強(qiáng)大的編程語言,為了規(guī)范不同的用戶對(duì)Excel應(yīng)用程序的訪問能力,需要對(duì)Excel文檔及有關(guān)的數(shù)據(jù)進(jìn)行有效的保護(hù), 這里根據(jù)自己及同行們的體會(huì),從以下二個(gè)方面介紹用VBA編程法實(shí)現(xiàn)對(duì)Excel文檔的保護(hù)。 對(duì)工作簿的保護(hù) 1.利用VBA中Workbook對(duì)象的SaveAs方法實(shí)現(xiàn)對(duì)工作簿的保護(hù), 下面就對(duì)SaveAs有 關(guān)的參量作一介紹: Filename:該字符串表示要保存的文件名。 可包含完整路徑。 如果不指定路徑,Microsoft Excel 將文件保存到當(dāng)前文件夾。 FileFormat: 可選,文件的保存格式。 Password :為一個(gè)區(qū)分大小寫的字符串(不超過15個(gè)字符) ,用于指定文件的保護(hù)密碼。 WriteResPassword: 該字符串表示文件的寫保護(hù)密碼。 如果文件保存時(shí)帶有密碼,但打開文件時(shí)不輸入密碼,則該文件以只讀模式打開。 ReadOnlyRecommended :如果為True則在打開文件時(shí)顯示一條信息,提示該文件以只讀模式打開。 下例就是在Excel應(yīng)用程序中添加一工作簿,將工作簿按常規(guī)文件格式存為“C:\pj\obj\經(jīng)濟(jì)評(píng)價(jià).xls”文件,并給該文件指定保護(hù)密碼“12”以及寫保護(hù)密碼“23”。 Sub 保護(hù)工作簿() NewWorkbook = Workbooks.add NewWorkbook.SaveAs FileName: ="C: \pj\obj\經(jīng)濟(jì)評(píng)價(jià).xls", FileFormat: = XlNormal,Password:="12",WriteResPassword:=″23″ End sub 2.利用VBA中Workbook對(duì)象的Protect方法對(duì)工作簿的結(jié)構(gòu)和窗口進(jìn)行保護(hù),Workbook對(duì)象的Protect方法帶有以下三個(gè)參量: Password:為加在工作表或工作簿上區(qū)分大小寫的密碼字符串。如果省略本參數(shù),不用密碼就可以取消對(duì)該工作簿的保護(hù)。否則,取消對(duì)該工作表或工作簿的保護(hù)時(shí)必須提供該密碼。如果忘記了密碼,就無法取消對(duì)該工作表或工作簿的保護(hù)。最好在安全的 地方保存一份密碼及其對(duì)應(yīng)文檔名的列表。 Structure: 若為True則保護(hù)工作簿結(jié)構(gòu)(工作簿中工作表的相對(duì)位置)。默認(rèn)值為False。 Windows 若為True則保護(hù)工作簿窗口。 下例就是對(duì)一名為“經(jīng)濟(jì)評(píng)價(jià).xls”的工作簿實(shí)現(xiàn)“結(jié)構(gòu)”和“窗口”保護(hù): Sub 保護(hù)工作簿() Workbooks (″經(jīng)濟(jì)評(píng)價(jià)″) .Protect Password: ="1234", Structure: =True, Windows:=True End sub Workbook對(duì)象的Unprotect方法用于取消對(duì)工作簿的保護(hù)。Unprotect方法只有一個(gè)參量,就是保護(hù)工作表時(shí)所用的口令。 3.對(duì)工作簿進(jìn)行隱藏保護(hù),可使他人無法看到其對(duì)應(yīng)的窗口。操作方法如下: 在VBA中使用Workbook對(duì)象下面的Windows對(duì)象的Visible屬性對(duì)工作簿進(jìn)行隱藏和取消隱藏,Visible屬性的值可取“True”和“False”兩種。 下面程序代碼完成對(duì)工作簿“book.xls”的隱藏: Sub 隱藏工作簿() Workbooks("book").Activate ActiveWindow.Visible = False End sub 或: Sub 隱藏工作簿() Workbooks("book").Windows(1).Visible=False End sub 對(duì)工作表的保護(hù) 1.對(duì)工作表實(shí)現(xiàn)口令保護(hù)利用VBA調(diào)用Worksheet對(duì)象的Protect方法對(duì)工作表進(jìn)行保護(hù),Protect帶有以下參量: Password 用于保護(hù)工作表的口令。 Drawingobjects 若為True,則對(duì)工作表中的Drawingobjects對(duì)象進(jìn)行保護(hù),缺省值為True。 Contents 若為True,則對(duì)單元格內(nèi)容進(jìn)行保護(hù),缺省值為True。 下面程序代碼完成對(duì)工作表“基礎(chǔ)數(shù)據(jù)表”的保護(hù): Sub 保護(hù)工作表() Worksheets(″基礎(chǔ)數(shù)據(jù)表″).Protect Password:="1234" End sub 2.對(duì)工作表實(shí)現(xiàn)隱藏保護(hù),使他人無法看到工作表: 利用VBA設(shè)置Worksheet對(duì)象的Visible屬性來隱藏工作表;Visible屬性的值為以下三個(gè)值中的一個(gè): True 工作表為顯示狀態(tài)。 False 工作表為隱藏狀態(tài)。 XlVerHidden 工作表為隱藏狀態(tài),且用戶不能通過“取消隱藏”對(duì)話框?qū)⑵涓臑轱@示狀態(tài)。當(dāng)Visible的值為XlVerHidden時(shí),只能利用VBA將其重新設(shè)置為True。 Sub 隱藏工作表() Worksheets("基礎(chǔ)數(shù)據(jù)表").Visible=False End sub 67、求:將所選區(qū)域中的數(shù)值全部轉(zhuǎn)化為"萬元"的最簡代碼. 求:將所選區(qū)域中的數(shù)值全部轉(zhuǎn)化為"萬元"的最簡代碼. 或能完成此功能的最便捷的命令操作. 寫了一個(gè),拋磚引玉: Sub convt() Dim cel As Range Dim dec As Variant Application.EnableEvents = False yesorno = MsgBox("確實(shí)將區(qū)域所有數(shù)值轉(zhuǎn)換為“萬元”?", vbYesNo + vbQuestion + vbDefaultButton1) If yesorno = vbYes Then 1: dec = Application.InputBox("請(qǐng)輸入小數(shù)位數(shù):", Default:=0, Type:=1) If dec = "" Then GoTo 1 End If For Each cel In Selection If IsNumeric(cel.Value) Then 'cel = (Round(cel.Value / 10000, 2)) & "萬元" cel = (Round(cel.Value / 10000, dec)) End If Next ElseIf yesorno = vbNo Then Exit Sub End If End Sub 以下當(dāng)為最簡代碼吧. Sub Macro2() Selection.NumberFormatLocal = "#"".""#," End Sub 轉(zhuǎn)載自 http://bbs./showtopic-169943.aspx |
|