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