姜彥偉
(常州工學(xué)院 計算機(jī)信息工程學(xué)院,江蘇 常州 213002)
Excel安全使用的實現(xiàn)與分析
姜彥偉
(常州工學(xué)院 計算機(jī)信息工程學(xué)院,江蘇 常州 213002)
Exdel的使用已相當(dāng)?shù)钠毡?,由于其具有易操作、易修改等特點,所以其數(shù)據(jù)很容易被修改或丟失.本文就是針對不同用戶的需要,利用VBA技術(shù)實現(xiàn)與分析Excel的安全使用.
VBA;對象;屬性;方法
在處理日常的一些表格數(shù)據(jù)時,Exdel可能是使用最多的,范圍最廣的.比如學(xué)生成績表、工資表等一些重要表格,對制表人來講就不希望他人在某種場合下有意或無意的修改或刪除.的確,Excel也提供了對表格的保護(hù)功能,但其所提供的功能過于單調(diào)或死板,比如鎖定單元格,他是將整張表的所有單元格全部鎖定,而不能按用戶要求鎖定部分單元格.所以說Exdel的保護(hù)功能缺乏靈活性.
對Exdel實現(xiàn)編程,利用VBA工具可能性是最有效的,也是最簡單的了.VBA也是一個面向?qū)ο蟮某绦蛟O(shè)計,Exdel對象模型包含有Rang對象、Worksheet對象、Workbook對象、Application對象、Window對象和Chart對象.
Rang對象代表工作表的單元格或單元格區(qū)域,對Exdel中的單元格或單元格區(qū)域進(jìn)行操作都需要將其設(shè)置為一個Rang對象.然后使用Rang對象的屬性和方法以完成對單元格或單元格區(qū)域的操作.對單元格區(qū)域的引用可可將引用包含在引號中,也可采用如下方式引用單元格:
● [C2]:引用單元格“C2”;
● ActiveCell:引用當(dāng)前單元格.
Worksheet對象是表示Exdel工作簿中的工作表,Worksheet對象是Worksheets集合的成員.在VBA中,不僅通過對Worksheets集合對象可向工作簿中增加、刪除工作表,而且通過對Worksheet對象的事件可控制工作表的行為,從而達(dá)到安全使用工作表的目的.
與聲明普通的變量一樣可使用Dim聲明對象對象類型的變量,但要求所聲明的變量必須是Variant、Object或Range類型.與普通變量不同的是,必須Set語句賦值一個對象給對象變量.
2.1 單元格的選擇
就整個工作表而言,有時對某些用戶只要求他只能對某些單元格或單元格區(qū)域進(jìn)行操作,而對該區(qū)域之外的區(qū)域禁止他選定,因此他也就不能夠?qū)@些區(qū)域進(jìn)行操作,從而達(dá)到這些不可選定區(qū)域數(shù)據(jù)的安全性.
為實現(xiàn)上述目標(biāo),只要利用Worksheet對象的ScrollArea屬性,只要在相應(yīng)的過程中添加如下代碼即可.
對于不連續(xù)的單元格區(qū)域上面的方法就受到限制,這時可由下面的方法實現(xiàn).
當(dāng)用戶選取不同單元格時,可產(chǎn)生Selection-Change事件,該事件的語句格式是:
其中參數(shù)Target即為選擇區(qū)域,用語句
可得到選定單元格的坐標(biāo),然后可用條件語句判別此單元格是否為允許選定的單元格,若不是,則可用Rang的Select方法強(qiáng)制選定允許選定的單元格.
2.2 工作表的刪除
在一個電子簿中可能含有多張工作表,為防止他人有意或無意的刪除其中的工作表,可對工作表設(shè)置刪除密碼,注意這里是對工作表而不是整個電子文檔文件.
這一技術(shù)的實現(xiàn)并不難.因為,刪除一個工作表是利用了Worksheet對象的Delete方法,只要在刪除前有一段密碼判別語句即可.具體的刪除語句可由下面語句實現(xiàn):
Application.displayAlerts=False ‘刪除工作表警告提示取消
2.3 根據(jù)密碼打開工作簿
設(shè)置密碼可能是對工作簿最安全的做法.做為使用者來講,當(dāng)然是希望在打開工作簿時先驗證密碼的正確與否?對非法用戶當(dāng)然禁止打開該工作簿.
其方法是在VBE的環(huán)境下添加一個窗口,此窗口即為登錄窗口,假設(shè)名稱為FrmPass,然后在工作簿的打開事件下打開此窗口,即編寫如下程序段:
關(guān)于登錄窗口設(shè)計屬于常規(guī)設(shè)計,此不在贅述.
上面的方法是設(shè)計應(yīng)用程序常規(guī)的登錄方法,其實,完全可以利用VBA中提供的工作簿的密碼設(shè)置功能,其方法是利用Workbook對象的Pass-Word屬性即可很方便的進(jìn)行設(shè)置,具體方法如下:
要取消密碼只要將上面代碼中的密碼設(shè)為空即可.
2.4 工作表的隱藏
有時在一個工作簿被打開的前提下,在某種特定的條件下,不希望某些表中的數(shù)據(jù)被他人看到,這時當(dāng)然可將這些通過某些組合鍵將表隱藏起來,這只要在鍵盤被按下的事件中編寫相應(yīng)的代碼即可.主要代碼如下:
其中的常量如下:
● XlSheetHidden:隱藏工作表,用戶可通過菜單取消隱藏.
● XlSheetVeryHidden:隱藏工作表,用戶不能通過菜單取消隱藏,只能通過VBA代碼取消隱藏.
● XlsheetVisual:顯示工作表
2.5 限制保存工作簿
有時為限制他人惡意打開工作表并修改表格中的數(shù)據(jù),也可通過禁止對其修改過的工作簿進(jìn)行保存的辦法達(dá)到對數(shù)據(jù)的安全保護(hù).
要達(dá)到此目的,只要注意當(dāng)工作表保存前引發(fā)Workbook對象的BeforeSave事件,其事件過程的結(jié)構(gòu)為:
在這個過程中有兩個參數(shù)SaveAsUI與Cancel其含義如下:
● SaveAsUI:如果要顯示“另存為”對話框,則將其設(shè)為True
● Cancel:如果在上面的過程中將此參數(shù)設(shè)為True,則意為在過程完成后不保存工作簿.
所以通過上面的兩個參數(shù)的不同設(shè)置即可禁止文件另存也可禁止保存修改,從而達(dá)到對表格進(jìn)行保護(hù)的目的.
如上只是對Excel的安全性做了部分介紹,雖然這些安全項目中有的可在Excel中的菜單中得以實現(xiàn),但有時我們?yōu)橛脩艟哂泻軓?qiáng)的個性化,往往其中的菜單也被取消,此時就只能利用VBA進(jìn)行一些功能的設(shè)計,所以說在進(jìn)行個性化的Excel設(shè)計中VBA編碼必不可少.
〔1〕劉模群.Visual Basic程序?qū)嵱媒坛?電子工業(yè)出版社,2008.
〔2〕伍高遠(yuǎn).ExcelVBA開發(fā)技術(shù)大全.清華大學(xué)出版社,2009.
TP317.3
A
1673-260X(2010)05-0029-02