用VBA自定义WORD菜单和工具栏,实现多风格界面

您所在的位置:网站首页 vba隐藏工具栏 用VBA自定义WORD菜单和工具栏,实现多风格界面

用VBA自定义WORD菜单和工具栏,实现多风格界面

2024-06-09 05:34| 来源: 网络整理| 查看: 265

    使用一个包含VBA代码的Word模板文件,通过“加载”方式直接运行,运行后将在Word XP的主界面中新增菜单和工具栏,并提供了几套适合不同工作环境的界面布局,单击相应菜单即可实现不同风格界面布局的切换。 标准风格:显示主菜单栏以及常用、格式两个工具栏,并将文本编辑区设置为“蓝底白字”。 简单风格:仅显示主菜单栏和程序新建的工具栏,并将文本编辑区恢复为“白底黑字”,如图1所示。单击工具栏上的按钮,则会显示对话框。 绘图和制表风格:显示主菜单栏和常用、格式、绘图、图片、符号栏以及表格和边框工具栏等,并将文本编辑区恢复为“白底黑字”。 用VBA自定义WORD菜单和工具栏,实现多风格界面 多风格界面的实现方法: 

一、创建工具栏和菜单的相关知识:

 

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