user_dqvpv 发表于 2016-4-12 17:46:23

谢谢laose朋友的回答,我在国外网站找到一段检测Placeholders集合中对象的索引值的脚本,粘贴如下,希望对大家有用!
Sub Object_Types_on_This_Slide()
    'Refers to each object on the current page and returns the Shapes.Type
    'Can be very useful when searching through all objects on a page
    Dim it As String
    Dim i As Integer
    Dim Ctr As Integer
    '''''''''''''''''
    'Read-onlyLong
    '''''''''''''''''
    For i = 1 To ActiveWindow.Selection.SlideRange.Shapes.Count
      'No need to select the object in order to use it
      With ActiveWindow.Selection.SlideRange.Shapes(i)
      'But it is easier to watch when the object is selected
      'This next line is for demonstration purposes only.
      'It is not necessary
      ActiveWindow.Selection.SlideRange.Shapes(i).Select
      Select Case .Type
            'Type 1
            Case msoAutoShape
                it = "an AutoShape. Type : " & .Type
            'Type 2
            Case msoCallout
                it = "a Callout. Type : " & .Type
            'Type 3
            Case msoChart
                it = "a Chart. Type : " & .Type
            'Type 4
            Case msoComment
                it = "a Comment. Type : " & .Type
            'Type 5
            Case msoFreeform
                it = "a Freeform. Type : " & .Type
            'Type 6
            Case msoGroup
                it = "a Group. Type : " & .Type
            ' If it's a group them iterate thru
            ' the items and list them
                it = it & vbCrLf & "Comprised of..."
                For Ctr = 1 To .GroupItems.Count
                  it = it & vbCrLf & _
                        .GroupItems(Ctr).Name & _
                        ". Type:" & .GroupItems(Ctr).Type
                Next Ctr
            'Type 7
            Case msoEmbeddedOLEObject
                it = "an Embedded OLE Object. Type : " & .Type
            'Type 8
            Case msoFormControl
                it = "a Form Control. Type : " & .Type
            'Type 9
            Case msoLine
                it = "a Line. Type : " & .Type
            'Type 10
            Case msoLinkedOLEObject
                it = "a Linked OLE Object. Type : " & .Type
                With .LinkFormat
                  it = it & vbCrLf & "My Source: " & _
                        .SourceFullName
                End With
            'Type 11
            Case msoLinkedPicture
                it = "a Linked Picture. Type : " & .Type
                With .LinkFormat
                  it = it & vbCrLf & "My Source: " & _
                        .SourceFullName
                End With
            'Type 12
            Case msoOLEControlObject
                it = "an OLE Control Object. Type : " & .Type
            'Type 13
            Case msoPicture
                it = "a embedded picture. Type : " & .Type
            'Type 14
            Case msoPlaceholder
                it = "a text placeholder (title or regular text--" & _
                     "not a standard textbox) object." & _
                     "Type : " & .Type
            'Type 15
            Case msoTextEffect
                it = "a WordArt (Text Effect). Type : " & .Type
            'Type 16
            Case msoMedia
                it = "a Media object .. sound, etc. Type : " & .Type
                With .LinkFormat
                  it = it & vbCrLf & " My Source: " & _
                  .SourceFullName
                End With
            'Type 17
            Case msoTextBox
                it = "a Text Box."
            'Type 18 = msoScriptAnchor, not defined in PPT pre-2000 so we use the numeric value
            'Case msoScriptAnchor
            Case 18
                it = " a ScriptAnchor. Type : " & .Type
            'Type 19 = msoTable, not defined in PPT pre-2000 so we use the numeric value
            'Case msoTable
            Case 19
                it = " a Table. Type : " & .Type
            'Type 19 = msoCanvas, not defined in PPT pre-2000 so we use the numeric value
            'Case msoCanvas
            Case 20
                it = " a Canvas. Type : " & .Type
            'Type 21 = msoDiagram, not defined in PPT pre-2000 so we use the numeric value
            'Case msoDiagram
            Case 22
                it = " a Diagram. Type : " & .Type
            'Type 22 = msoInk, not defined in PPT pre-2000 so we use the numeric value
            'Case msoInk
            Case 22
                it = " an Ink shape. Type : " & .Type
            'Type 23 = msoInkComment, not defined in PPT pre-2000 so we use the numeric value
            'Case msoInkComment
            Case 23
                it = " an InkComment. Type : " & .Type
            'Type -2
            Case msoShapeTypeMixed
                it = "a Mixed object (whatever that might be)." & _
                     "Type : " & .Type
            'Just in case
            Case Else
                it = "a mystery!? An undocumented object type?" & _
                        " Haven't found one of these yet!"
      End Select
      MsgBox ("I'm " & it)
      End With
    Next i
End Sub

skywind 发表于 2016-4-12 17:47:10

这段代码检索的是对象类型,不是对象索引号啊!

0316028 发表于 2016-4-12 17:59:16

楼上说得对,现在我还没有找索引号的对应属性,急等!
页: 1 [2]
查看完整版本: 请教PPT之VBA问题,急!!!