用VBA自定义WORD菜单和工具栏.doc_第1页
用VBA自定义WORD菜单和工具栏.doc_第2页
用VBA自定义WORD菜单和工具栏.doc_第3页
用VBA自定义WORD菜单和工具栏.doc_第4页
用VBA自定义WORD菜单和工具栏.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用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 = 简单风格 .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 WithEnd Sub3.编制删除工具栏和菜单的子程序Sub deletebutton() 删除工具栏和菜单的子程序 Dim tempbar As CommandBar 定义临时工具栏变量 On Error Resume Next 该语句用于忽略错误 Application.CommandBars(Menu Bar).Reset 重新设置Word XP的主菜单,即删除新建的菜单 For Each tempbar In Application.CommandBars 通过“For EachNext”语句遍历Word XP所有的工具栏 If tempbar.Name = My_Custom_Bar Then 如名称和新建的工具栏相同 tempbar.Visible = False 设置为不可视 tempbar.Delete 删除该工具栏 End If NextEnd Sub4。编写控件和菜单项对应的事件代码“简单风格”子程序,添加“Private”关键字用于将该子程序设置为局部型,下同Private Sub Simple_Style() resetall 调用重新设置所有工具栏的子程序,下同 进行“简单风格”相对应的操作,在前述内容中已进行了解读,下同 CommandBars(Standard).Visible = False CommandBars(Formatting).Visible = False CommandBars(Drawing).Visible = False Options.BlueScreen = FalseEnd Sub“标准风格”子程序Private Sub Standard_Style() resetall CommandBars(Standard).Visible = True CommandBars(Formatting).Visible = True Options.BlueScreen = TrueEnd Sub“绘图和制表风格”子程序Private Sub Draw_Table_Style() resetall CommandBars(Standard).Visible = True CommandBars(Formatting).Visible = True CommandBars(Drawing).Visible = True CommandBars(Tables and Borders).Visible = True CommandBars(符号栏).Visible = True CommandBars(Picture).Visible = True Options.BlueScreen = FalseEnd Sub5. 编写辅助的子程序上达三段代码中,均需调用一个重新设置所有工具栏的子程序,该子程序的功能为设置所有相关工具栏为不可视,然后按需要显示相关的工具栏,代码如下所示:重新设置所有工具栏的子程序Private Sub resetall() 以下代码很容易理解,可通过修改前面录制的“宏”代码来编写 CommandBars(Standard).Visible = False CommandBars(Formatting).Visible = False CommandBars(Dra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论