[返回]
中国计算机报1999年第41期

为Excel应用系统制作封面

张建宇

  用Excel结合宏语言Visual Basic for Application 能轻松开发出日常工作所需的小型管理信息系统, 如能再制作一个漂亮的封面一定会使你的应用系统从外观到操作方式上增色不少。本文以笔者编制的“税收收入分析系统”为例,向你介绍为Excel应用系统制作封面的方法。


  一、建立封面工作表


  打开“税收收入分析系统”工作簿,单击“插入”选单下的“工作表”命令,插入一新的工作表Logo。在新的工作表中添加适当的文字、图形并利用“窗体”工具栏添加一些按钮,然后为按钮指定运行系统其他部分的宏。再单击“工具”选单下的“选项”命令,在“选项”对话框中的“视图”标签中清除“行列标号”和“网格线”前的复选框。


  二、编制功能模块


  在“工具”选单中,单击“宏”下的“Visual Basic 编辑器”,启动VBA,单击“插入”选单中的“添加模块”命令,在Module1模块中分别加入以下过程:

  1.设置自定义选单,替代Excel系统本身的选单

Sub DeleMenu() ′删除自定义选单

On Error Resume Next

CommandBars("Tax").Delete

  End Sub

  Sub DefineMenu() ′自定义选单

   Dim TBar As CommandBar

   Dim TButton As CommandBarButton

   DeleMenu

   Set TBar = CommandBars.Add(Name:="Tax",Position:=msoBarBottom, MenuBar:=True)

   Set TButton = TBar.Controls.Add(msoControlButton)

   TButton.Style = msoButtonCaption

   TButton.Caption = "退出"

   TButton.OnAction = "QuitTax"

   TBar.Protection = msoBarNoMove

  ′自定义选单不可移动

   TBar.Visible = True

  End Sub

  Sub QuitTax() ′退出按钮的过程

   DeleMenu

   DefineWindow xlOff

   DefineBar xlOff

   ActiveWorkbook.Close

  End Sub

  2.设置新的窗口、恢复Excel窗口

  在编制应用系统时往往要根据需要来重新设置窗口,结束应用程序时恢复Excel窗口。

  Sub DefineWindow(X) ′X参数决定是调用设置新的窗口,还是恢复Excel窗口

   Const NewWidth = 260

  ′定义新窗口的宽和高

   Const NewHeight = 236

   Static OldWidth

   Static OldHeight

   Static OldState ′保存窗口的状态

   If X = xlOn Then

   OldWidth = Application.Width

   OldHeight = Application.Height

   OldState = Application.WindowState

   Application.WindowState = xlNormal

  ′窗口处于正常状态,以避免当窗口最大化时,不能改变窗口的高和宽的值

   Application.Width = Ne wWidth

   Application.Height = NewHeight

   Application.Caption = "税收收入分析系统"

   ActiveWorkbook.Unprotect

   ActiveWindow.WindowState= xlMaximized

   ActiveWindow.Caption = " "

   ActiveWorkbook.Protect, True, True

   Application.DisplayFormulaBar=False

  ′隐藏窗口中不必要的部分

   Application.DisplayStatusBar = False

   ActiveWindow.DisplayHorizontalScrollBar = False

   ActiveWindow.DisplayVerticalScrollBar = False

   ActiveWindow.DisplayWorkbookTabs=False

   Else

   ′以下为恢复Excel窗口的状态,同上面部分相反

   Application.Caption = Empty

   Application.Width = OldWidth

   Application.Height = OldHeight

   Application.WindowState = OldState

   ActiveWorkbook.Unprotect

   Application.DisplayFormulaBar= False

   Application.DisplayStatusBar = False

   Application.DisplayFormulaBar = True

   Application.DisplayStatusBar = True

   ActiveWindow.DisplayHorizontalScrollBar = True

   ActiveWindow.DisplayVerticalScrollBar = True

   ActiveWindow.DisplayWorkbookTabs=True

   End If

  End Sub

  3.移去和恢复工具栏

  Sub DefineBar(X)

  ′由于工具栏名称和数目的不确定性,所以不能用变量来保存一系列工具栏,可以声明一个New Collection类型变量,建立一个自定义集合来保存要恢复的工具栏。

   Static OldBars As New Collection

   Dim NewBar

   ′隐藏工具栏

   If X = xlOn Then

   For Each NewBar In Application.CommandBars

   ′如果命令栏是一个属性Type值为1的选单,并且是可见的不需要隐藏

   If NewBar.Type 1 And NewBar.Visible Then

   OldBars.Add NewBar

   NewBar.Visible = False

   End If

   Next NewBar

   Else

   ′恢复工具栏

   For Each NewBar In OldBars

   NewBar.Visible = True

   Next NewBar

   End If

  End Sub


  三、将封面嵌入应用系统


  单击“工程资源管理器”窗口中的ThisWorkbook,插入以下内容作为工作簿打开和关闭时运行的命令。

  Private Sub Workbook—Open()′工作簿打开

   Worksheets("Logo").Select

   DefineMenu

   DefineWindow xlOn

   DefineBar xlOn

  End Sub

  Private Sub Workbook_BeforeClose(Cancel As Boolean) ′工作簿关闭

   DeleMenu

   DefineWindow xlOff

   DefineBar xlOff

   ActiveWorkbook.Saved=True

  ′退出时不提醒存盘信息

  End Sub

  关闭工作簿,重新打开,怎么样? 是不是很像一个专业的应用系统!