利用VBA编程实现PowerPoint文稿格式编辑自动化

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:michael_jian
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Visual Basic For Application(VBA)是微软公司为其办公套件Microsoft Office提供的新一代标准宏语言,作为一种通用的宏语言可被所有的Microsoft 可编程应用软件所共享。VBA主要是根据用户对可编程应用软件中不同对象的操作,触发的相应事件,去激活相应的程序,通过对相关的对象执行不同的方法,或是修改相关对象的属性来完成特定的工作。该文介绍的内容是通过VBA编程,修改PowerPoint中相关对象的属性来达到文稿格式编辑自动化的目的。
  关键词:VBA编程;PowerPoint对象模型;办公自动化
  中图分类号:TP316文献标识码:A文章编号:1009-3044(2008)35-2528-04
  
  1 VBA简介
  
  VBA(Visual Basic For Application)是微软公司为其办公套件Microsoft Office提供的新一代标准宏语言,作为一种通用的宏语言可被所有的Microsoft 可编程应用软件所共享。VBA是一种自动化语言,用以实现Office中的应用程序自动化,并创建自定义的解决方案。
  VBA主要是根据用户对可编程应用软件中不同对象的操作,触发的相应事件,去激活相应的程序,通过对相关的对象执行不同的方法,或是修改相关对象的属性来完成特定的工作。可以认为VBA是用程序开发语言VASUAL BASIC 的子集,但VBA并不等同于VB,VBA和VB的区别包括如下几个方面:1)VB是设计用于创建标准的应用程序,而VBA是使已有的可编程应用软件自动化;2)VB具有自己的开发环境,而VBA必须依赖于已有的可编程应用软件;
  3)VB开发的应用程序可编译为可执行文件(*.EXE),能独立于开发环境而直接在操作系统下运行,而VBA开发的程序必须依赖于它的“父”程序,例如:PowerPoint。
  尽管存在这些不同,VBA和VB在结构上仍然十分相似。事实上,如果你已经掌握了VB,会发现学习VBA非常快;相应的,学完VBA也会给学习VB打下坚实的基础。
  
  2 PowerPoint对象模型
  
  VBA将Microsoft Office中的每一个应用程序都看成一个对象。每个应用程序都由各自的Application对象代表。VBA是一种基于对象的开发语言,VBA编程更多的是针对用户对应用软件中不同对象的操作,触发的相应事件,去编写对相关对象执行不同的方法,或是修改相关对象的属性等操作的代码。因此在编写VBA程序之前,有必要对相关应用软件中的对象模型作一大概的了解。
  打开PowerPoint的VBA帮助文档VBAPP10.CHM,点击“Microsoft PowerPoint对象”帮助页面即可看到“PowerPoint 对象模型”,从这个模型中很容易找到我们需要的几个集合和对象:Application、Presentations、Presentation、Slides、Slide、Shapes、shape、Placeholders、PlaceholderFormat、TextFrame、Ruler、TextRange、ParagraphFormat等,其中:
  Application 代表整个Microsoft PowerPoint应用程序。Application对象包括:应用程序范围内的设置和选项(例如,当前打印机的名称)
  用于返回顶层对象的属性,例如:ActivePresentation、Windows等。
  Presentation 代表一个PowerPoint演示文稿。Presentation对象属于Presentations集合中的成员。Presentations集合中包含所有的Presentation对象,它们分别代表PowerPoint中所有打开的演示文稿。
  Slide 代表PowerPoint文稿中的单张幻灯片,Slides集合包含演示文稿中的所有Slide对象。
  Shape 代表幻灯片中的单个形状,Shapes集合包含指定幻灯片中的所有Shape对象。
  Placeholders 代表指定幻灯片中占位符的所有Shape对象的集合。Placeholders集合中的每个Shape对象代表一个占位符,占位符可以是文本、图表、表格、组织结构图或其他类型的对象。如果幻灯片有标题,则标题是集合中的第一个占位符。
  PlaceholderFormat 包含专门应用于占位符的属性,例如占位符类型。
  TextFrame 代表Shape对象中的文本框。包含文本框中的文本,还包含控制文本框对齐方式和缩进方式的属性和方法。
  Ruler 代表指定形状或指定样式中所有文本的标尺。包含大纲文本的制表位和缩进设置。
  TextRange 包含附加到形状上的文本,以及用于操作文本的属性和方法。
  ParagraphFormat 代表文本区域的段落格式。
  
  3 编程说明
  
  3.1 问题的提出
  目前,有很多教学教材都带有电子教案等电子文档,其中大多数为Powerpoint演示文稿。但原作者所提供的电子教案并不一定就完全适用于使用者,且不说内容上要作适当的修改,就是文稿格式也不一定适合使用者的要求。内容的修改必须由使用者逐字逐句的斟酌,没法做批量处理;但文稿格式一般固定,即使有差异,也可做个别修改,适合做批量的调整,可以用编程的方式来实现处理的自动化。
  3.2 设计分析
  PowerPoint文稿的文本格式,大至可分为这么几块:标题版式幻灯片中标题的格式,标题和文本版式幻灯片中的标题格式,其他占位符的格式和其他文本框的文本格式,只要能编程控制这些对象的文本格式,PowerPoint文稿中的文本格式基本确定。因此,必须从PowerPoint对象模型中找出上述对象,并对其相关属性进行修改,以达到控制文本格式的目的。
  标题版式幻灯片中的标题(其PlaceholderFormat对象的Type属性值为:ppPlaceh- olderCenterTitle)、标题和文本版式幻灯片中的标题(其PlaceholderFormat对象的Type属性值为:ppPlaceholderCenterTitle)、普通文本框(其Shape对象的Type属性值为:msoTextBox)中的文本格式所要控制的内容主要包括:文本字体类型、大小、前景色、粗体、斜体、下划线,行间距,段落前行间距,段落后行间距,对齐方式,缩进格式等。这些内容可通过TextFrame(文本框)中的TextRange(文本)的Font(字体)和ParagraphFormat(段落格式)的各种属性,以及TextFrame(文本框)中的Ruler(标尺)的各种属性来控制。下面对所要用到的上述各种属性作一简单介绍:
  ① 字体(Font)对象中常用的属性有:
  NameAscii 返回或设置用于ASCII字符的字体(字符集编号在0-127之间的字符)。
  NameOther 返回或设置亚洲字体名称。
  NameFarEast 返回或设置其字符集编号大于127的字符所用的字体。
  Size 返回或设置字符大小,以磅为单位。
  Bold 决定字符格式是否为粗体。
  Italic 决定字符格式是否为斜体。
  Underline 决定指定文本是否带有下划线。
  ② 段落格式(ParagraphFormat)对象中常用的属性有:
  Alignment 用以指定的段落格式为每个段落返回或设置对齐方式。
  BaseLineAlignment 为指定段落返回或设置基线对齐方式。
  LineRuleAfter 决定是否将每段最后一行后面的行距设为指定的磅数或行数。
  LineRuleBefore 决定是否将每段第一行前面的行距设为指定的磅数或行数。
  LineRuleWithin 决定是否将基线间的行距设为指定磅数或行数。
  SpaceAfter 以磅或行为单位返回或设置指定文本中每段末行后的间距大小。
  SpaceBefore 以磅或行为单位返回或设置指定文本中每段首行前的间距大小。
  SpaceWithin 以磅或行为单位返回或设置指定文本中基准行之间的距离。
  TextDirection 返回或设置指定段落的文本方向。
  WordWrap 决定是否自动换行以适应形状内部。
  ③ 标尺(Ruler)对象中常用的属性有:
  Levels 返回一个描述大纲缩进格式的RulerLevels对象。RulerLevels指定标尺上所有RulerLevel对象的集合。每个RulerLevel对象代表特定大纲级别上文本的首行缩进和左缩进。该集合通常包含五个成员(每个可用大纲级别各一个)。
  每个RulerLevel对象上有:
  FirstMargin属性:以磅为单位返回或设置指定大纲级别的首行缩进。
  LeftMargin属性:以磅为单位返回或设置指定大纲级别的左缩进。
  3.3 程序编写思路
  根据上述分析,可按下述思路编写程序:
  1)在要做格式编辑自动化的PowerPoint文稿中随便录制一个新宏,然后编辑这个宏,除宏的首、尾保留外删除其它内容。
  2)使用一个For循环来遍历文稿中的所有幻灯片,循环次数可由Slides集合对象的Count属性取得。
  3)循环体内大致分三块内容,一块用以处理标题版式幻灯片中标题的文本格式,一块用以处理标题和文本版式幻灯片中标题的文本格式,一块用以处理普通文本框中的文本格式。
  4)幻灯片中除标题以外的其他占位符中的文本格式用一个子过程单独进行处理。
  3.4 程序清单:
  Dim MyDocument As Object
  Sub Macro1()
  ’ 宏由 xxdwww 记录,日期: 2006-4-15
  Dim i As Integer, j As Integer, k As Integer, m As Integer, n As Integer
  n = ActivePresentation.Slides.Count ’取得文稿中的幻灯片张数
  For i = 1 To n
  Set MyDocument = ActivePresentation.Slides(i)
  m = MyDocument.Shapes.Placeholders.Count ’取得每张幻灯片中的占位符数
  If m > 0 Then
  Select Case MyDocument.Shapes.Placeholders(1).PlaceholderFormat.Type
  Case ppPlaceholderCenterTitle’是标题版式幻灯片中的标题
  ’下面是对标题版式幻灯片中标题文本的字体格式进行处理
  With MyDocument.Shapes.Title.TextFrame.TextRange.Font
  .NameAscii = "宋体"
  .NameOther = "宋体"
  .NameFarEast = "宋体"
  .Bold = True
  .Size = 40
  End With
  ’下面是对标题版式幻灯片中标题文本的段落格式进行处理
  With MyDocument.Shapes.Title.TextFrame.TextRange.ParagraphFormat
  .Alignment = ppAlignCenter
  .LineRuleWithin = msoTrue
  .SpaceWithin = 1
  .LineRuleBefore = msoTrue
  .SpaceBefore = 0.2
  .LineRuleAfter = msoFalse
  .SpaceAfter = 0
  End With
  Call NoTitle(2, m) ’调周NoTitle子过程处理其他占位符中的文本格式
  Case ppPlaceholderTitle’是标题和文本版式幻灯片中的标题
  ’下面是对标题和文本版式幻灯片中标题文本的字体格式进行处理
  With MyDocument.Shapes.Title.TextFrame.TextRange.Font
  .NameAscii = "宋体"
  .NameOther = "宋体"
  .NameFarEast = "宋体"
  .Bold = True
  .Size = 32
  End With
  ’下面是对标题和文本版式幻灯片中标题文本的段落格式进行处理
  With MyDocument.Shapes.Title.TextFrame.TextRange.ParagraphFormat
  .Alignment = ppAlignLeft
  .LineRuleWithin = msoTrue
  .SpaceWithin = 1
  .LineRuleBefore = msoTrue
  .SpaceBefore = 0.2
  .LineRuleAfter = msoFalse
  .SpaceAfter = 0
  End With
  Call NoTitle(2, m)’调周NoTitle子过程处理其他占位符中的文本格式
  Case Else ’没有标题
  Call NoTitle(1, m)’调周NoTitle子过程处理其他占位符中的文本格式
  End Select
  End If
  k = MyDocument.Shapes.Count ’取得幻灯片中形状的总数
  ’处理幻灯片中除占位符外其他形状中的文本格式(主要是普通文本框)
  For j = m 1 To k
  If MyDocument.Shapes(j).Type = msoTextBox Then
  ’下面是对形状中文本的段落格式进行处理
  With MyDocument.Shapes(j).TextFrame.TextRange.ParagraphFormat
  .Alignment = ppAlignLeft
  .LineRuleWithin = msoTrue
  .SpaceWithin = 1.25
  .LineRuleBefore = msoTrue
  .SpaceBefore = 0.2
  .LineRuleAfter = msoFalse
  .SpaceAfter = 0
  End With
  ’设置形状的大小为容纳其边界内的文本而自动更改。
  MyDocument.Shapes(j).TextFrame.AutoSize = ppAutoSizeShapeToFitText
  ’下面是对形状中文本的首行缩进和左缩进进行处理
  With MyDocument.Shapes(j).TextFrame.Ruler.Levels(1)
  .FirstMargin = 0
  .LeftMargin = 0
  End With
  ’下面是对形状中文本的字体格式进行处理
  With MyDocument.Shapes(j).TextFrame.TextRange.Font
  .NameAscii = "宋体"
  .NameOther = "宋体"
  .NameFarEast = "宋体"
  .Bold = True
  .Size = 24
  End With
  End If
  Next j
  Next i
  End Sub
  Sub NoTitle(n1 As Integer, n2 As Integer)’专门处理非标题占位符中的文本格式子过程
  Dim j As Integer
  For j = n1 To n2
  ’下面是对占位符中文本的段落格式进行处理
  With MyDocument.Shapes.Placeholders(j).TextFrame.TextRange.ParagraphFormat
  .Alignment = ppAlignLeft
  .LineRuleWithin = msoTrue
  .SpaceWithin = 1.25
  .LineRuleBefore = msoTrue
  .SpaceBefore = 0.2
  .LineRuleAfter = msoFalse
  .SpaceAfter = 0
  End With
  ’设置占位符的大小为容纳其边界内的文本而自动更改。
  MyDocument.Shapes.Placeholders(j).TextFrame.AutoSize = ppAutoSizeShapeToFitText
  ’下面是对占位符中文本的首行缩进和左缩进进行处理
  With MyDocument.Shapes.Placeholders(j).TextFrame.Ruler.Levels(1)
  .FirstMargin = 0
  .LeftMargin = 0
  End With
  ’下面是对占位符中文本的字体格式进行处理
  With MyDocument.Shapes.Placeholders(j).TextFrame.TextRange.Font
  .NameAscii = "宋体"
  .NameOther = "宋体"
  .NameFarEast = "宋体"
  .Bold = True
  If Mydocument.Shapes.Placeholders(j).PlaceholderFormat.Type _= ppPlaceholderSubtitle Then
  .Size = 32 ’如果是标题版式幻灯片中的子标题
  Else
  .Size = 28
  End If
  End With
  Next j
  End Sub
  
  4 总结
  
  在Microsoft Office套件中使用VBA编程,其关健在于理解Office应用软件中的对象和对象模型,以及一个对象在对象模型中的位置。只有弄清楚了对象模型,才能找到对象在对象模型中的位置,了解对象所具有的方法和属性,并通过编程去调用对象的方法或修改对象的属性,以达到应用程序自动化的目的。
  
  参考文献:
  [1] McFedries P.OFFICE 2000 VBA编程技术[M].北京:电子工业出版社,2002.
  [2] 微软公司.Office编程技术——理解对象模型[EB/OL].http://202.121.7.7/person/chenmy/jiaoyou/o01.html.
其他文献
摘要:在高等职业教育中,采用CBE 教学模式进行实践课教学, 利用基于建构主义教育理论的开源网络教学平台Moodle 对如何做好高职教学, 建立以职业能力培养为目标的高职高专新型教学模式的方法与策略进行了研究和探索。  关键词:Moodle平台;CBE教学模式;应用  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)24-1355-02    Moodle Platf
【摘要】“画配话”是低年级写话训练的一种形式,一般是纸张的上面为画,下面为写话。画可以是学生自己画,也可以利用剪贴画等现成的图画,主旨是以“画”促“话”,训练学生的表达能力,为写话服务。本文拟从课内和课外训练两个方面对“画配话”在教学中的应用进行阐述。  【关键词】画配话,语言训练,课内,课外  “画配话”一般是纸张的上面为画,下面为写话,画可以是学生自己画,也可以利用剪贴画等现成的图画形式。学生
摘要:随着计算机网络技术的发展,网络安全问题越来越多的受到人们的关注,同时,也出现了各种类型的计算机病毒和木马程序。最近,出现了一种特殊木马程序——Rootkit,该文详细的介绍了Rootkit的隐藏技术和检测方法。  关键词:Rootkit;木马程序;网络安全;隐藏;检测  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)31-0838-02  Defence and
摘要:随着网络的普及,XML在电子商务和数据交换中扮演了越来越重要的角色,而PHP则一直在动态网页的设计中得到广泛应用,两者的结合具有重要的意义。该文通过对PHP语言的XML解析器的使用与编写XML操作类的两种方式进行论述,给出了在PHP中运用XML的解决途径。  关键词:PHP;XML;expat;类  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)26-1627-
摘要:本项目是基于3DS MAX的个人形象自主设计,主要通过逼真模拟人体模型,进行自主形象设计,包括服饰选择、形象装扮等,达到完美自我包装,并通过动画效果进行多角度试镜。其中,用户可输入各部位参数,动态调整人体模型,使人体模型更加逼真。本项目还提供专家指导、自我测试、服装设计、美容连线等功能。  关键词:3D人体模型;自主形象设计;形象仿真  中图分类号:TP391文献标识码:A文章编号:1009
书名:中小学教师职业道德培训手册:师德的定义养成与评估  作者:小彼得.C.穆雷尔、玛丽·迪茨等  出版社:中国青年出版社  出版时间:2016年  ISBN:9787515340777  定价:32元  教师是人类灵魂的工程师,是学生成长的引路人。教师的思想政治素质和职业道德水平直接关系到中小学的德育水平,关系到国家的前途命运和民族的未来。同时,新时代也对教师的职业素养提出了新的要求。重视中小学
摘要:随着越来越复杂的基于Web的新型服务的出现,传统的Web应用已经不能满足需要。Ajax(Asynchronous JavaScrift and XML)是指一种创建交互式网页应用的Web开发技术,是多种已经蓬勃发展的技术以一种新的形式组合而成,该文从Ajax的主要技术、工作原理以及特点等几个方面介绍Ajax在Web方面与传统Web应用相比具有独特的优势,必将有光明的前景。  关键词:Ajax
“阅读”是最古老、最基本、也最重要的学习方式之一。随着数字化时代的来临,在终身学习教育理念的普及与指向培养“核心素养”的世界教育改革浪潮中,“阅读素养”逐渐成为热门的研究命题之一。自2000年国际学生评价项目(PISA)首次在我国举行,有关“阅读素养”的文献开始在国内出现,近年来更是备受社会各界的关注。笔者通过分析2003~2017年以来在核心期刊上发表的关于“阅读素养”的论文,以期对该领域的研究
书名:外国文学作品欣赏  作者:滑明达  出版社:中国社会科学出版社  出版时间:2005年  ISBN:9787500452348  定价:78元  长期以来,外国文学作品赏析和教学的研究一直是相关领域专家学者关注的课题。在对这些课题进行研究的过程中,出现了诸多优秀成果,其中,以导读和赏析的方式對外国文学作品进行推介、解读的著作,不仅能为读者在选择和阅读的过程中提供必要的引导,也可以为教学提供参
一、“三路合一”阅读教学  本文所说的“三路”指的是文章的文路、学生的学路以及教师的教路。  文路是促成读者体悟文章的情感线索,也是体现文章思想和主旨的内隐脉络。作者巧妙构思,或使文章内容一波三折,或使情感线索突出,或使情节出人意料等,这些都是教师在研读文本时应该留意的文路。一般来说,文路多隐藏在文章的标题或者重点语句中。对教师来说,理清文路有利于依照课程目标、学生实际情况来选择合适的教学内容,保