2008年10月19日星期日

VBA开发实用指南

VBA开发实用指南: "VBA开发实用指南
作者:未知 文章来源:网络 点击数:8856 更新时间:2006-10-4

该对象代表幻灯片母版、标题母版、讲义母版或备注母版。

  TextStyles属性:为幻灯片母版返回TextStyles 集合,代表标题文本、正文文本和默认文本。

  6.Slide对象

  该对象代表幻灯片。

  (1)SlideID属性:返回幻灯片的唯一标识符。

  (2)SlideIndex属性:返回幻灯片在Slides集合中的索引号。

  7.SlideShowView对象

  该对象代表幻灯片放映窗口中的视图。

  (1)AcceleratorsEnabled属性:用于设置是否允许在幻灯片放映时使用快捷键。

  (2)CurrentShowPosition属性:返回当前幻灯片在放映中的位置。

  (3)DrawLine方法:在指定幻灯片放映视图中绘制直线。

  (4)EraseDrawing方法:用于清除通过DrawLine方法或绘图笔工具在放映中绘制的直线。

  (5)GotoSlide方法:用于切换指定幻灯片。

  四、VBA综合开发实例温馨贺卡向导
  (一)例程分解
  本例程是一个简单的贺卡向导,可直接运行并可辅助生成简单的贺卡。程序主界面与Word的标准向导程序类似,单击'上一步'和'下一步'按钮或直接单击窗体左侧的切换按钮均可直接跳转至相应步骤。单击'取消'按钮将关闭向导窗体,如图4所示。



  单击'下一步'按钮切换至下一页,在该页面中可选择贺卡的节日并输入发送者和接受者的姓名,如图5所示。



  单击'下一步'按钮切换至下一页,在该页面中可输入贺词,如图6所示。



  单击'下一步'按钮切换至向导程序的末一页,单击'完成'按钮即可生成文档。生成的文档将包含将用户在前述步骤中填写的信息,生成一份简单的贺卡。

  (二)程序知识点
  1.向导的编制原理

  向导程序的本质即前述的Word模板文件(DOT文件),唯一区别在于其扩展名为'WIZ',因此编制向导程序首先需编制模板并调试代码,在调试无误后将扩展名改为'WIZ'即可。向导编制的常规步骤如下所述:

  (1)创建向导所需的自动图文集:向导所需的自动图文集是包含书签的自动图文集,最后生成文档时即调用了预保存的图文集,而在Word中用于定位的书签对象,可在需填写输入内容的位置上帮助程序实现定位并替换。该步骤是编制向导程序的关键。

  (2)编辑窗体和模块:向导程序需通过窗体来实现交互功能,因此通过合理运用控件,完全可设计出美观易用的窗体,然后对窗体的控件进行事件编程,实现流程控制。窗体设计完毕后,需通过模块来保存通用的功能,常用的功能包含生成文档、替换书签和删除书签等。

  (3)设置向导程序入口:向导程序需通过特定的事件来触发,建议在'ThisDocument'对象的'New'事件中输入调用向导程序入口的代码。Document对象的事件包括New事件(在创建基于模板的文档时触发。按功能分析,向导程序入口即通过该事件执行)、Open 事件(在打开文档时触发)和Close事件(在关闭文档时触发)。

  2.界面设计知识点

  (1)向导程序需逐步引导用户,因此建议使用多页控件(MultiPage)实现界面切换。

  (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.后续工作

  向导程序编制、调试无误后,可将其"

2008年10月14日星期二

广大农民和农村基层干部:8亿农民必将分享到更多改革发展成果_时政频道_新华网

广大农民和农村基层干部:8亿农民必将分享到更多改革发展成果_时政频道_新华网: "新华网北京10月14日电 党的十七届三中全会提出到2020年我国农村改革发展的基本目标任务,为8亿农民清晰地描绘了未来生活的美好图景。广大农民和农村基层干部坚信,在推进新一轮农村改革发展的进程中,广大农民必将分享到更多改革发展成果。"