Microsoft Visual Basic for Application Extensibility 5.3”的引用。 此外,软件运行不应该影响其本来面目,所以在其被打开时需要将其本身提供的界面恢复初态,在工程保存时将已经变为注释行的代码恢复原状,下面通过编写当前工程的自动宏AUTO_OPEN和“ThisWorkbook”模块的Workbook_BeforeSave事件过程去分别实现这两个软件恢复功能: Public Sub AUTO_OPEN() '查找辅助工作表 SheetsCount = Application.ActiveWorkbook.Worksheets.Count For i = 1 To SheetsCount If ActiveWorkbook.Sheets(i).Name = "按钮运行次数记录表" Then FoundSheet = True End If Next i '添加或清除辅助工作表内容 If Not FoundSheet Then ActiveWorkbook.Unprotect Worksheets.add.Move After:=Worksheets(SheetsCount) ActiveSheet.Name = "按钮运行次数记录表" ActiveSheet.Visible = False Else Sheets("按钮运行次数记录表").Cells.Clear Sheets("按钮运行次数记录表").Visible = False End If '将工作表中按钮恢复为显示状态 SheetsCount = ActiveWorkbook.Worksheets.Count For i = 1 To SheetsCount Set MySheet = Worksheets(i) For Each sh In MySheet.Shapes If sh.Visible = False Then sh.Visible = True Next Next i End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) '恢复注释行为原来的正式代码行 Set MyCoponent = Application.VBE.ActiveVBProject.VBComponents For Each ch In MyCoponent StartLine = 1 StartCol = 1 LinesCount = ch.CodeModule.CountOfLines Endline = LinesCount Do While ch.CodeModule.Find("'隐藏行", StartLine, StartCol, Endline, 1, False, False) If StartCol <> 1 Then GoTo Label7 Str1 = ch.CodeModule.Lines(StartLine, 1) Str1 = Mid(Str1, InStr(Str1, ":") + 1) ch.CodeModule.ReplaceLine StartLine, Str1 Label7: StartLine = StartLine + 1 StartCol = 1 Endline = LinesCount Loop Next End Sub 4 结束语 综上所述,针对基于Excel VBA测试软件的使用权限设定,本文提出的通过执行过程代码的控制方法实现工作表用户按钮的限定技术,操作起来尽管存在一定的麻烦,但仍然具有相当的实用性。
参考文献 [1] 云舟工作室著,中文版Excel 2000 VBA一册通,人民邮电出版社,2000.1 [2] Microsoft Visual Basic for Application帮助 上一页 [1] [2] [3]
Tags:
|