ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 16312|回复: 11

PowerPoint VBA编程手册

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-8-20 16:47 | 显示全部楼层 |阅读模式
本帖最后由 ning84 于 2011-8-21 16:23 编辑

http://www.uudisc.com/filedownload?user=library&id=3990815
http://download.csdn.net/source/443535


000.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-21 16:26 | 显示全部楼层
本帖最后由 ning84 于 2011-8-21 16:27 编辑

使用形状(绘图对象)请参阅 特性
形状或绘图对象由三种不同的对象表示:Shapes 集合、ShapeRange 集合和 Shape 对象。通常,Shapes 集合用于创建形状并对幻灯片中的所有形状进行重复操作;Shape 对象用于修改单个形状;而 ShapeRange 集合用于修改多个形状,就象在用户界面中使用多个选定的形状一样。
设置形状的属性
形状的许多格式属性不是由直接应用于 ShapeShapeRange 对象的属性设置的。相反,相关的形状属性在第二级对象内进行组合。例如 FillFormat 对象,其中包含了与形状填充相关的所有属性;又如 LinkFormat 对象,其中包含了链接的 OLE 对象的所有特有属性。若要设置一个形状的属性,必须先返回代表相关形状属性的对象,然后设置该返回的对象的属性。例如,使用 Fill 属性返回 FillFormat 对象,然后设置 FillFormat 对象的 ForeColor 属性,从而设置指定形状的前景填充色,如以下示例所示。
Set myDocument = ActivePresentation.Slides(1)myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)同时对多个形状应用属性或方法
在用户界面中,有些操作可以对选定的多个形状执行;例如,可以选定多个形状并同时设置它们各自的填充。其他些操作则只能对选定的单个形状执行;例如,只有选定单个形状时才能编辑其中的文本。
在 Visual Basic 中,对一组形状应用属性和方法有两种方式。这两种方式使您可以对若干形状执行在单个形状上能执行的所有操作,而不管是否可以在用户界面上执行这些操作。

    如果该操作在用户界面上影响多个选定的形状,则要在 Visual Basic 中执行该操作时,只需先建立一个包含要使用的形状的 ShapeRange 集合,然后直接对该 ShapeRange 集合应用适当的属性和方法。
  • 如果该操作在用户界面上不影响多个选定的形状,仍然可以在 Visual Basic 中执行该操作。方法是:在包含要使用的形状的 Shapes 集合或 ShapeRange 集合中执行循环,并对集合中的单个 Shape 对象应用适当的属性和方法。
许多应用于 Shape 对象和 ShapeRange 集合的属性和方法在用于特定形状时会失败。例如,如果将 TextFrame 属性应用于不能包含文本的形状,将会失败。如果不能确定特定的属性或方法对 ShapeRange 集合中的每个形状都能应用,则不要对 ShapeRange 集合应用于该属性或方法。如果确实要对形状集合应用一个这样的属性或方法,则必须在应用之前逐个测试集合中的每个形状,以确保形状的类型与所应用的属性和方法相匹配。
对 ShapeRange 集合应用属性和方法
如果可以同时在用户界面上对多个选定的形状执行某种操作,则可以通过编程的方式创建一个 ShapeRange 集合,再应用适当的属性和方法以执行该操作。以下示例在 myDocument 中创建一个包含自选图形“Big Star”和“Little Star”的形状区域,并对它们应用过渡填充。
Set myDocument = ActivePresentation.Slides(1)Set myRange = myDocument.Shapes _    .Range(Array("Big Star", "Little Star"))myRange.Fill.PresetGradient msoGradientHorizontal, _    1, msoGradientBrass下面是将属性和方法应用于 ShapeRange 集合的一般原则。

    将方法应用于集合等于对集合中的每个 Shape 对象都应用该方法。 设置集合的属性值等于设置该范围内每个形状的属性值。 如果集合中所有形状的某一返回常数的属性值相同,则集合的该属性将返回单个形状的该属性值。如果集合中所有形状的该属性值不相同,则返回“mixed”常数。 如果集合中所有形状的某一返回简单数据类型的属性值相同(例如 LongSingleString),集合的该属性将返回单个形状的该属性值。
  • 有些属性值仅当集合中有且只有一个形状时才能返回或设置。如果集合中有一个以上的形状,将发生运行时错误。此情况通常在用户界面中的等价操作只能用于单个形状时(例如,编辑形状中的文本或编辑任意多边形的点)发生。
设置组合在 ShapeRange 集合第二级对象中的形状的属性时,上述原则同样适用。例如 FillFormat 对象。如果第二级对象代表可在用户界面中对多个选定对象执行的操作,则可以从 ShapeRange 集合返回该对象并设置其属性。例如,可以使用 Fill 属性返回 FillFormat 对象,该对象代表 ShapeRange 集合中所有形状的填充。设置该 FillFormat 对象的属性将设置 ShapeRange 集合中所有形状的相同属性。
循环 Shapes 或 ShapeRange 集合
选择多个形状并执行某个命令,即使无法在用户界面中同时对多个形状执行一个操作,但可以用编程方式执行相同的操作。方法是:在包含要使用的形状的 Shapes 集合或 ShapeRange 集合中执行循环,然后对集合中的单个 Shape 对象应用适当的属性和方法。以下示例逐个检查 myDocument 中的所有形状,并在每个自选图形中添加文本。
Set myDocument = ActivePresentation.Slides(1)For Each sh In myDocument.Shapes    If sh.Type = msoAutoShape Then            sh.TextFrame.TextRange.InsertAfter " (version 1)"    End IfNext
以下示例创建包含当前窗口中所有选定形状的 ShapeRange 集合,并为集合中每个能够包含文本的形状设置文本。
For Each sh in ActiveWindow.Selection.ShapeRange    If sh.HasTextFrame Then        sh.TextFrame.TextRange = "Initially selected"    End IfNext在形状区域中对齐、布置、分组形状
使用 AlignDistribute 方法定位一组形状的相互位置或相对于包含它们的文档的位置。使用 Group 方法或 Regroup 方法从多个形状中创建单个形状组。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-21 16:27 | 显示全部楼层
使用表格
请参阅 特性
在 Microsoft PowerPoint 中,可以自己创建表格而无需从 Microsoft Word 中导入。表格是 Shapes 集合中的成员。表格中的每个单元格、列和行都是单独的可编程对象。

创建表格
使用 AddTable 方法可在幻灯片上创建表格。此方法会向 Shapes 集合中添加具有 NumRows 和 NumColumns 参数所指定的行数和列数的表格。本示例向第二张幻灯片中添加具有三行和四列的表格。

ActivePresentation.Slides(2).Shapes _
    .AddTable NumRows:=3, NumColumns:=4, Left:=10, _
    Top:=10, Width:=288, Height:=288
检测某形状是否为表格
在要处理表格中的内容或对象之前,首先必须了解正在使用的形状是否为表格。若要查看某形状是否为表格,请使用 HasTable 属性。例如,假定第一张幻灯片中有许多形状,且其中有一个是表格。而您希望调整此表格的大小,以使之能接受从其他来源所导入的数据。下面的代码将遍历第二张幻灯片上的 Shapes 集合以找到该表格并调整其列宽。

With ActivePresentation.Slides(2)
    For sh = 1 To .Shapes.Count
        If .Shapes(sh).HasTable Then
            For Each col In .Shapes(sh).Table.Columns
                col.Width = 110
            Next col
        End If
    Next
End With
使用单元格、

TA的精华主题

TA的得分主题

发表于 2011-8-23 20:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-8-24 00:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-8-24 00:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-8-20 09:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-1-11 03:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢楼主分享,不过第一个链接因网站关闭,下载已失效。

TA的精华主题

TA的得分主题

发表于 2019-7-25 14:32 | 显示全部楼层
现在市面上只有一本《PPT新视角——VBA应用技术》是讲PPT VBA方面内容的书。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-18 19:17 | 显示全部楼层
  1. Sub ll()
  2.    Dim Present As Presentation, Sld As Slide, Shp As Shape
  3.        Set Present = Application.ActivePresentation
  4.        For Each Sld In Present.Slides
  5.             Debug.Print Sld.Name
  6.             For Each Shp In Sld.Shapes
  7.                   Debug.Print Shp.Name, Shp.Type
  8.             Next Shp
  9.        Next Sld
  10. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 20:23 , Processed in 0.055606 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表