|
。 (2)VBA的窗体设计中未提供类似VB的控件数组功能,因此需访问Controls集合对象来控制一些外观和功能均类似的控件。 (3)由于从前述知识点可得向导程序本质为模板文件,因此开发者可直接打开Word已提供的向导程序(如“实用文体向导”等),然后通过工程资源管理器导出其界面窗体,然后在此基础上进行参考和修改,可大大提高编制的效率。 (4)Controls集合:窗体的Controls集合代表其包含的全部控件。Controls集合中的每个控件均有唯一的索引,也可通过控件名称来引用。在向导程序中,为有效地控制功能和外观均类似的控件(如切换按钮),可通过名称引用来枚举访问窗体的Controls集合,即可控制这些控件。 (5)多页控件:多页控件(MultiPage)是Pages集合的容器,每个多页控件均包含一个或多个Page对象,其常用属性和方法如下: Value属性:为多页控件默认属性,返回当前活动页面的索引号,从“0”开始编号,依此类推。 Style属性:用于设置多页控件标签的显示风格,在向导中建议设置为“2”(即不显示表头)。 (6)Page对象:该对象代表多页控件的页面。每个 Page对象均可放置不同的控件,以实现多界面切换的效果,第一个Page对象默认名称为“Page1”,其常用属性和方法如下: Picture属性:用于设置页面的背景图片。 PictureTiling属性:用于设置是否平铺图片。 PictureSizeMode属性:用于设置显示背景图片的方式。 (三)程序实现步骤 1.创建向导所需的自动图文集 通过前述内容可得创建向导所需的自动图文集是关键的步骤,因此首先在编辑界面中输入相关的文字,然后在需插入内容的位置添加书签,最后选择全部内容,以“hk”命名并保存于模板的自动图文集中。如图7所示: 2.编制窗体 在VBA编辑器的工程资源管理器中添加窗体,放置多页控件、标签、文本框、列表框等控件(也可采用前述的导入并修改的方法来设计窗体),由于该窗体使用的控件较多,限于篇幅,不在逐一介绍,可按效果图自行设计,本文仅对一些需在代码中使用的控件进行介绍。 首先切换至多页控件的第二页,该页面中需编程的控件位置和名称如图8所示: 如图8所示,其中“frmHKWiz”为用户窗体,“Page1”为多页控件的页面对象,“txtfsz”和“txtjsz”均为文本框控件,“shpMap0”至“shpMap3”、“lblMap0”至“lblMap3”均为Label控件,“lstjr”为列表框控件。切换至多页控件的第三页,该页面中需编程的控件位置和名称如图9所示: 如图9所示,其中“Page2”为多页控件的页面对象,“shpChartPath”为标签控件,“txthc”为文本框控件,“cmdCancel”、“cmdBack”、“cmdNext”和“cmdFinish”均为命令按钮控件。 窗体界面设计完毕后,切换至代码编辑窗口,首先输入常量声明,代码如下所示: ''''代表页面数量 Const P_Count = "3" ''''标签名称的常量 Const Const_LBL = "lblMap" ''''标签名称的常量 Const Const_SHP = "shpMap" 然后输入公共变量,代码如下所示: ''''用于保存当前页面编号的变量 Dim indexPanel As Integer 输入自定义的过程代码,如下所示: ''''初始化控件的过程 Private Sub init_Controls() With lstjr .AddItem "圣诞节" .AddItem "中秋节" .AddItem "国庆节" End With End Sub ''''切换页面的过程 Private Sub changepage(iNewPanel As Integer) If indexPanel = iNewPanel Or fWizardCallBack Then Exit Sub End If ''''通过Controls集合对象来实现页面切换效果 frmHKWiz.Controls(Const_SHP & indexPanel).BackColor = vbWhite frmHKWiz.Controls(Const_LBL & indexPanel).FONTBOLD = False indexPanel = iNewPanel frmHKWiz.Controls(Const_SHP & indexPanel).BackColor = vbGreen frmHKWiz.Controls(Const_LBL & indexPanel).FONTBOLD = True mpgWizardPage.Value = indexPanel End Sub 最后输入各控件的事件代码,如下所示: ''''用于模拟切换按钮的标签单击事件 Private Sub lblMap0_Click() changepage (0) End Sub Private Sub lblMap1_Click() changepage (1) End Sub Private Sub lblMap2_Click() changepage (2) End Sub Private Sub lblMap3_Click() changepage (3) End Sub Private Sub shpMap0_Click() changepage (0) End Sub Private Sub shpMap1_Click() changepage (1) End Sub Private Sub shpMap2_Click() changepage (2) End Sub Private Sub shpMap3_Click() changepage (3) End Sub Private Sub shpMap4_Click() changepage (4) End Sub ''''“上一步”按钮单击事件 Private Sub cmdBack_Click() If indexPanel > 0 Then changepage (indexPanel - 1) End If End Sub ''''“下一步”按钮单击事件 Private Sub cmdNext_Click() If indexPanel < P_Count Then changepage (indexPanel + 1) End If End Sub ''''“取消”按钮单击事件 Private Sub cmdCancel_Click() ''''关闭窗体 Unload Me End Sub ''''“完成”按钮单击事件 Private Sub cmdFinish_Click() Application.ScreenUpdating = False ''''调用模块中创建文档的过程,即窗体和模块的接口过程 CreateNewDoc (True) End Sub ''''窗体初始化事件 Private Sub UserForm_Initialize() indexPanel = 0 mpgWizardPage.Value = 0 changepage (0) init_Controls End Sub 3.编制模块 模块用于保存向导程序中公用的代码,在工程资源管理器中添加标准模块,命名为“Common”,然后输入代码(也可模仿窗体的导入操作,将Word提供的向导程序包含的模块导入,参考并使用其中的很多过程),如下所示: ''''启动向导,即向导程序的入口 Public Sub StartWizard() ''''显示窗体 frmHKWiz.Show End Sub ''''创建新文档的过程,通过“fDummy”参数可使该Public类型的过程不在Word的“宏”列表中出现。 Public Sub CreateNewDoc(fDummy As Boolean) Application.ScreenUpdating = False ''''设置鼠标为“等待”形状 System.Cursor = wdCursorWait ''''获取向导程序的模板 Set objWizTemplate = ActiveDocument.AttachedTemplate Application.DisplayAutoCompleteTips = True ''''插入已创建的自动图文集 ActiveDocument.AttachedTemplate.AutoTextEntries("hk").Insert Selection.Range, True ActiveDocument.Select ''''调用替换书签的过程,将窗体中输入的内容在文档中进行替换 ReplaceBookmark "jr", frmHKWiz.lstjr.Text ReplaceBookmark "fsz", frmHKWiz.txtfsz.Text ReplaceBookmark "jsz", frmHKWiz.txtjsz.Text ReplaceBookmark "hc", frmHKWiz.txthc.Text ''''设置新文档的属性 With ActiveDocument .SpellingChecked = True .GrammarChecked = True .UndoClear End With Application.DisplayAutoCompleteTips = True Selection.HomeKey wdStory ''''恢复默认鼠标形状 System.Cursor = wdCursorNormal Application.ScreenUpdating = True ''''关闭窗体 Unload frmHKWiz ''''调用删除所有书签的过程 deleteallbookmark End Sub ''''替换书签内容的过程 Private Sub ReplaceBookmark(which As String, what As String) If Len(what) = 0 Then what = "" End If ''''选择指定的书签 Selection.GoTo what:=wdGoToBookmark, Name:=which ''''替换内容 Selection.TypeText what End Sub ''''删除所有书签的过程 Private Sub deleteallbookmark() Dim bm As Bookmark ''''遍历所有的书签 For Each bm In ActiveDocument.Bookmarks ''''删除书签 bm.Delete Next End Sub 4.设置向导入口 代码编写完毕后,在工程资源管理器中切换至“ThisDocument”对象,输入事件代码,如下所示: Private Sub Document_New() ''''调用模块(Common)中启动向导的过程 Common.StartWizard End Sub 5.后续工作 向导程序编制、调试无误后,可将其扩展名改为“WIZ”,然后搜索“Normal.dot”文件所在的文件夹,并将该向导程序放置于该目录,随后启动Word XP后即可在“模板”窗体的“常用”栏中显示该向导的图标。
上一页 [1] [2] [3] [VB.NET程序]VBA (2)常数 [VB.NET程序]VBA (1)常数 [VB.NET程序]iWebOffice2004调用VBA脚本解释及翻译 [Access]ACCESS入门教程(十六)模块与“VBA”语言
|