ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

学习帮助文件的AlternativeText

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-1-5 07:01 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
PowerPoint 开发人员参考
ShapeRange.AlternativeText 属性

返回或设置与 Web 演示文稿中的形状关联的替换文本。可读/写。String 类型。语法
表达式.AlternativeText
表达式   一个代表 ShapeRange 对象的变量。
返回值
String
示例

以下示例实现的功能是:为活动窗口中选定的图形设定可选文字。选定图形是一幅野鸭的图片。
Visual Basic for Applications
ActiveWindow.Selection.ShapeRange _    .AlternativeText = "This is a mallard duck."

按照帮助文件做题,没明白提示在哪里表现。



image.png
  1. Sub l()
  2.     Dim ShpRng As ShapeRange, Shp As Shape
  3.         Set ShpRng = Application.ActiveWindow.Selection.ShapeRange
  4.         'Debug.Print ShpRng.Name
  5.         ShpRng.AlternativeText = "This is a mallard duck."
  6. "
  7.         Stop
  8. End Sub
复制代码







TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-5 07:15 | 显示全部楼层
PowerPoint 开发人员参考
ShapeRange.Creator 属性
返回 Long 类型值,该值代表创建指定对象的应用程序创建者代码,该代码由四个字符构成。例如,如果对象是在 PowerPoint 中创建的,则此属性返回一个十六进制数 50575054。只读。
语法

表达式.Creator

表达式   一个代表 ShapeRange 对象的变量。

返回值
Long

说明


Creator 属性用于 Macintosh 下的 Microsoft Office 应用程序。


示例


以下示例显示关于 myObject 创建者的消息。

Visual Basic for Applications
Set myObject = Application.ActivePresentation.Slides(1).Shapes(1)
If myObject.Creator = &h50575054 Then
    MsgBox "This is a PowerPoint object"
Else
    MsgBox "This is not a PowerPoint object"

是不是高级程序员测试Ppt的版本。
"This is a PowerPoint object"  
Else
"This is not a PowerPoint object"

--------------------------------------------------
表达式.Id  表达式   一个代表 ShapeRange 对象的变量



返回一个 Long 类型值,该值标识形状或形状范围。只读。
语法

表达式.Id

表达式   一个代表 ShapeRange 对象的变量。

返回值
Long

示例


以下示例向当前演示文稿添加一个新形状,再根据 ID 属性的值填充该形状。

Visual Basic for Applications


----------------------------------------


ShapeRange.Vertices 属性
[url=]全部显示[/url]
[url=]全部隐藏[/url]

以一系列[url=]坐标对 (坐标对:一对值,表示两维数组中存储的点的 x 和 y 坐标,该数组中包含许多点的坐标。)[/url]的形式返回指定任意多边形顶点(和贝赛尔曲线的控点)的坐标。可以将此属性返回的数组用作 AddCurve 方法或 AddPolyline 方法的参数。只读。Variant 类型。语法
表达式.Vertices
表达式   一个代表 ShapeRange 对象的变量。
返回值
Variant
说明

下表显示 Vertices 属性如何将 vertArray() 数组中的值与三角形的顶点坐标相关联。
VertArray 元素内容
VertArray(1, 1)第一个顶点到幻灯片左边的水平距离
VertArray(1, 2)第一个顶点到幻灯片顶部的垂直距离
VertArray(2, 1)第二个顶点到幻灯片左边的水平距离
VertArray(2, 2)第二个顶点到幻灯片顶部的垂直距离
VertArray(3, 1)第三个顶点到幻灯片左边的水平距离
VertArray(3, 2)第三个顶点到幻灯片顶部的垂直距离





TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-5 07:28 | 显示全部楼层


必须会用的语句。

ShapeRange.Tags 属性

返回一个代表指定对象的标签的 Tags 对象。只读。语法
表达式.Tags
表达式   一个代表 ShapeRange 对象的变量。
返回值
Tags
示例

  注释
在本例中,标签值是以大写形式添加和保存在文本中的。因此,应使用大写形式的文本对标签值进行测试,如第二个例子所示。

以下示例向当前演示文稿的第一张幻灯片中添加名为“REGION”和“PRIORITY”的标签。
Visual Basic for Applications
With Application.ActivePresentation.Slides(1).Tags    .Add "Region", "East"     'Adds "Region" tag with value "East"    .Add "Priority", "Low"    'Adds "Priority" tag with value "Low"End With

以下示例在当前演示文稿的所有幻灯片中搜索名为“PRIORITY”的标签,并弹出消息框显示标签值。如果不存在名为“PRIORITY”的标签,则将标签的值设为“Unknown”。
Visual Basic for Applications
For Each s In Application.ActivePresentation.Slides    With s.Tags        found = False        For i = 1 To .Count          If .Name(i) = "PRIORITY" Then              found = True              slNum = .Parent.SlideIndex              MsgBox "Slide " & slNum & " Priority: " & .Value(i)          End If        Next        If Not found Then          slNum = .Parent.SlideIndex          .Add "Priority", "Unknown"          MsgBox "Slide " & slNum & " Priority tag added: Unknown"        End If    End WithNext


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-5 07:56 | 显示全部楼层




已经体会到ShapeRange.Group 方法的实用性

将指定区域中的形状形成一组。以单个 Shape 对象返回分组后的形状。语法
表达式.Group
表达式   一个代表 ShapeRange 对象的变量。
返回值
Shape
说明

由于一组形状作为单个形状处理,所以创建和分解形状组将更改 Shapes 集合中的项目数,并更改集合中受影响的项目之后的项目索引号。

示例

本示例将两个形状添加到 myDocument,组合两个新形状,为该组设置填充,旋转该组并将其发送到绘图层后。
Visual Basic for Applications
Set myDocument = ActivePresentation.Slides(1)With myDocument.Shapes    .AddShape(msoShapeCan, 50, 10, 100, 200).Name = "shpOne"    .AddShape(msoShapeCube, 150, 250, 100, 200).Name = "shpTwo"    With .Range(Array("shpOne", "shpTwo")).Group        .Fill.PresetTextured msoTextureBlueTissuePaper        .Rotation = 45        .ZOrder msoSendToBack    End WithEnd With

Sub ll6()    Dim ShpRng As ShapeRange, Shp As Shape        Set ShpRng = Application.ActiveWindow.Selection.ShapeRange        'Debug.Print ShpRng.Name        ShpRng.AlternativeText = "ffff"        Stop        For Each Shp In ShpRng.GroupItems             Debug.Print Shp.Name, Shp.Id        Next ShpEnd Sub





TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-5 16:10 | 显示全部楼层
今天早上一吓懵了,原来是把Shape.ID(ShapeRange.ID)与SlideRange.SlideID的概念搞混了。


SlideRange.SlideID 属性

返回指定幻灯片的唯一 ID 号。只读。Long 类型。语法
表达式.SlideID
表达式   一个代表 SlideRange 对象的变量。
返回值
Long
说明

SlideIndex 属性不同,在演示文稿中添加或重新排列幻灯片时,Slide 对象的 SlideID 属性不会改变。因此,与使用具有幻灯片索引号的 Item 方法相比,使用具有幻灯片 ID 号的 FindBySlideID 方法是从 Slides 集合返回特定 Slide 对象的更可靠方法。

示例

以下示例示范如何检索 Slide 对象的唯一 ID 号,并使用此编号从 Slide 集合返回该 Slides 对象。

------------------------------------------------------------------------------------------
Shape.ID示例中的Case很有意思。

Shape.Id 属性

返回一个 Long 类型值,该值标识形状或形状范围。只读。
语法
表达式.Id
表达式   一个代表 Shape 对象的变量。
返回值
Long
示例

以下示例向当前演示文稿添加一个新形状,再根据 ID 属性的值填充该形状。

Visual Basic for Applications
Sub ShapeID()    With ActivePresentation.Slides(1).Shapes.AddShape _            (Type:=msoShape5pointStar, Left:=100, _            Top:=100, Width:=100, Height:=100)        Select Case .Id            Case 0 To 500                .Fill.ForeColor.RGB = RGB(Red:=255, Green:=0, Blue:=0)            Case 500 To 1000                .Fill.ForeColor.RGB = RGB(Red:=255, Green:=255, Blue:=0)            Case 1000 To 1500                .Fill.ForeColor.RGB = RGB(Red:=255, Green:=0, Blue:=255)            Case 1500 To 2000                .Fill.ForeColor.RGB = RGB(Red:=0, Green:=255, Blue:=0)            Case 2000 To 2500                .Fill.ForeColor.RGB = RGB(Red:=0, Green:=255, Blue:=255)            Case Else                .Fill.ForeColor.RGB = RGB(Red:=0, Green:=0, Blue:=255)        End Select    End WithEnd Sub



ShapeRange.Id 属性

返回一个 Long 类型值,该值标识形状或形状范围。只读。
语法
表达式.Id
表达式   一个代表 ShapeRange 对象的变量。

返回值
Long


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-5 18:27 | 显示全部楼层



自己出题自己解

image.jpg
  1. Sub ll8()
  2.    Dim OrientArr, OrientIdArr
  3.        OrientArr = Array("West", "South", "North", "East")
  4.        OrientIdArr = Array(11, 12, 15, 16)
  5.       
  6.    Dim Shp As Shape, ShpRng As ShapeRange
  7.    Dim Sld As Slide
  8.    Dim ii
  9.        Set ShpRng = Application.ActiveWindow.Selection.ShapeRange
  10.        Set Sld = ShpRng.Parent
  11.            Debug.Print ShpRng.Name
  12.            For ii = 1 To ShpRng.GroupItems.Count
  13.                 'Set ShpRng = Sld.Shapes.Range(OrientIdArr(ii - 1))
  14.                 Set Shp = ShpRng.GroupItems(ii)
  15.                
  16.                 Shp.Name = OrientArr(ii - 1)
  17.                 Shp.TextFrame2.TextRange.Text = Shp.Name
  18.                
  19.            Next ii
  20.            
  21. End Sub
复制代码


运行结果Shp.Name不是唯一性,名字有重复。
image.jpg




TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-5 22:06 | 显示全部楼层
ShpRng.GroupItems("矩形 3")

  1. Sub ll()
  2.    Dim Shp As Shape, ShpRng As ShapeRange
  3.    Dim ii
  4.        Set ShpRng = Application.ActiveWindow.Selection.ShapeRange
  5.        'Debug.Print ShpRng.Name
  6.        For ii = 1 To ShpRng.GroupItems.Count
  7.            Set Shp = ShpRng.GroupItems(ii)
  8.            'Debug.Print Shp.Name
  9.            Stop
  10.            Set Shp = ShpRng.GroupItems("矩形 3")
  11.            Debug.Print Shp.Name
  12.            Stop
  13.        Next ii
  14.       
  15. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-6 06:34 | 显示全部楼层
ning84 发表于 2024-1-5 22:06
ShpRng.GroupItems("矩形 3")

不用Selection方法。
使用GroupItems方法,目标实现。

  1. Option Explicit

  2. Sub lll()
  3.    Dim Pres As Presentation
  4.        Set Pres = Application.ActivePresentation
  5.    Dim Sld As Slide, Shp As Shape, Shp1 As Shape
  6.    Dim ShpRng As ShapeRange, Shps As Shapes
  7.    Dim ii, jj, Str
  8.        Set Sld = Pres.Slides(1)
  9.        For ii = 1 To Sld.Shapes.Count
  10.            Set Shp = Sld.Shapes(ii)
  11.            Debug.Print Shp.Name, Shp.AutoShapeType, TypeName(Shp)
  12.            Select Case Shp.AutoShapeType
  13.                Case -2
  14.                    Shp.Name = "A" & ii
  15.                    For jj = 1 To Shp.GroupItems.Count
  16.                         Set Shp1 = Shp.GroupItems(jj)
  17.                         Debug.Print Shp1.Name, Shp1.AutoShapeType
  18.                         Shp1.Name = "Aa" & jj
  19.                    Next jj
  20.            End Select
  21.        Next ii
  22.        Set ShpRng = Sld.Shapes.Range("A1")
  23.        Set Shp = ShpRng.GroupItems("Aa1")
  24.        Set Shp1 = ShpRng.GroupItems("Aa2")
  25.        Debug.Print Shp.Name, Shp1.Name
  26. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 19:46 , Processed in 0.040169 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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