用VBA自定义WORD菜单和工具栏,实现多风格界面 |
您所在的位置:网站首页 › vba隐藏工具栏 › 用VBA自定义WORD菜单和工具栏,实现多风格界面 |
使用一个包含VBA代码的Word模板文件,通过“加载”方式直接运行,运行后将在Word
XP的主界面中新增菜单和工具栏,并提供了几套适合不同工作环境的界面布局,单击相应菜单即可实现不同风格界面布局的切换。
标准风格:显示主菜单栏以及常用、格式两个工具栏,并将文本编辑区设置为“蓝底白字”。
简单风格:仅显示主菜单栏和程序新建的工具栏,并将文本编辑区恢复为“白底黑字”,如图1所示。单击工具栏上的按钮,则会显示对话框。
绘图和制表风格:显示主菜单栏和常用、格式、绘图、图片、符号栏以及表格和边框工具栏等,并将文本编辑区恢复为“白底黑字”。
一、创建工具栏和菜单的相关知识:
1.CommandBars集合 Office软件中,每个软件所有的工具栏均可用该集合来代表,该集合可通过名称或索引号来指定菜单栏或工具栏,如“CommandBars("Formatting")”,即通过名称“Formatting”指定了“格式工具栏”。Add方法用于新建工具栏,并返回CommandBar对象。 2.CommandBar对象 该对象代表工具栏,新建工具栏的控件均以该对象为载体,是VBA工具栏开发的核心对象,其常用方法和属性如下: Position属性:用于设置工具栏的位置,可通过VBA常量将工具栏的位置设置为置顶、居左、居右、置下或浮动。 Visible属性:用于设置工具栏是否可见。 Enabled属性:用于设置工具栏是否可用。 Reset方法:将内置工具栏的设置重置为默认设置,删除其中的自定义控件,在恢复软件原有工具栏或菜单时非常有用。 3.CommandBarPopup 对象 该对象代表工具栏中的一个弹出式控件,其实Office软件的菜单也可理解为一个弹出式的控件,而菜单栏可以视为“另类”的工具栏。因此,通过该对象即可添加菜单栏,方法和添加工具栏类似。 4.CommandBarButton对象 该对象代表工具栏的按钮控件,是常用的工具栏二次开发控件,其常用方法和属性如下: OnAction属性:用于设置VBA代码过程名(该代码过程不可使用参数),该过程在单击按钮后运行。
Style属性:用于设置工具栏按钮的显示方式,可通过VBA常量进行设置。 FaceId属性:用于设置工具栏按钮的图标编号,即设置工具栏按钮的外观。自定义图标的工具栏按钮,其FaceId属性值需设置为0。 BeginGroup属性:用于设置控件是否分组显示。 5.CommandBarComboBox对象 该对象代表工具栏中的组合框、下拉框或文本框控件,也是常用的工具栏二次开发控件。 二、WORD自动宏 为使模板中的VBA代码可在某些特定操作中(如加载或打开时)自动执行,必须通过VBA提供的自动宏来实现。 自动宏是一些特殊的宏,这些宏可在执行特定操作时运行(类似DOS时代在系统启动时执行的“AutoExec.bat”文件)。以Word XP为例,其提供的自动宏如下所述: AutoExec宏:启动Word 或加载全局模板触发。 AutoNew宏:生成新文档时触发。 AutoOpen宏:打开已有文档时触发。 AutoClose宏:关闭文档时触发。 AutoExit宏:退出Word XP或卸载全局模板时触发。
正如其他宏,自动宏可以保存于 Normal 模板、其他模板或文档之中。唯一的例外是:AutoExec 宏,它只有保存在 Startup 文件夹的 Normal 模板或共用模板中才能自动运行。 在命名冲突的情况下(多个自动宏名相同),Word 运行上下文中最近的自动宏。例如,如果同时在文档和附加模板中建立了 AutoClose 宏,只有文档中的宏能够运行。如在 Normal 模板中建立了 AutoNew 宏,只有当文档或其附加模板中没有名为 AutoNew 的宏时,该自动宏才能运行。 如果用户按下 Shift 键可以终止宏的运行。例如,新建一个文档(该文档基于包含 AutoNew 宏的模板),按下 Shift 键可以终止 AutoNew 宏的运行。方法是按下 Shift 键的同时单击【文件】菜单下【新建】对话框中的【确定】按钮,直到显示新文档。在运行可能触发自动宏的宏时,可用下列指令终止自动宏的运行。 WordBasic.DisableAutoMacros 注意: 宏病毒就是利用自动宏的特点来自动进行传播的,并不需要人工运行。
三、新建工具栏和自定义菜单的代码: 录制“宏”之后,在VBA的工程资源管理器中将自动添加一个名称为“NewMacros”的模块,双击该模块的图标,即可显示代码编辑窗口。 1.定义一些全局变量 Dim Obj_Toolbar As CommandBar '代表工具栏的变量 Dim Obj_Menu As CommandBarPopup '代表菜单的变量 Dim Obj_Toolbar_button As CommandBarButton '代表菜单项和按钮的变量 2.编制生成工具栏和菜单的子程序 Sub addbutton() '创建工具栏和菜单并设置属性的子程序 deletebutton '调用删除工具栏和菜单的子程序 Set Obj_Toolbar = Application.CommandBars.Add("My_Custom_Bar") '新建工具栏,“My_Custom_Bar”代表工具栏的名称 Set Obj_Menu = Obj_Toolbar.Controls.Add(Type:=msoControlPopup, ID:=1) '在工具栏上新建下拉菜单,“ID:=1”代表该工具栏的功能由用户自定义,下同 With Obj_Menu '设置下拉菜单的属性 .Caption = "风格切换" '设置标题 .BeginGroup = True '设置分组 End With Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1) '新建菜单项,下同 With Obj_Toolbar_button '设置菜单项的属性,下同 .Caption = "标准风格" .BeginGroup = True .OnAction = "Standard_Style" '设置单击菜单项执行的子程序名称 End With Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1) '新建其他的菜单项,并设置属性 With Obj_Toolbar_button .Caption = "简单风格" .BeginGroup = True .OnAction = "Simple_Style" End With Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1) With Obj_Toolbar_button .Caption = "绘图和制表风格" .BeginGroup = True .OnAction = "Draw_Table_Style" End With Set Obj_Toolbar_button = Obj_Toolbar.Controls.Add(Type:=msoControlButton, ID:=1) '新建工具栏按钮 With Obj_Toolbar_button '设置按钮的属性 .Caption = "关于" .Style = msoButtonIconAndCaption .FaceId = 984 .OnAction = "Show_Msg" End With With Obj_Toolbar '设置工具栏的属性 .Visible = True '工具栏可视 .Enabled = True '工具栏可用 .Position = msoBarTop '工具栏置顶 End With Set Obj_Menu = Application.CommandBars("Menu Bar").Controls.Add(Type:=msoControlPopup, ID:=1) '在Word XP的主菜单中新建菜单,“Menu Bar”代表Word XP主菜单的名称 With Obj_Menu '设置新建菜单的属性 .Caption = "风格切换" End With Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1) '在新建菜单中添加菜单项,下同 With Obj_Toolbar_button '设置新建菜单项的属性,下同 .Caption = "标准风格" .BeginGroup = True .OnAction = "Standard_Style" End With Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1) '新建其他的菜单项,并设置属性 With Obj_Toolbar_button .Caption = "简单风格" |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |