Уравнения и изображения не обнаружены в VBA - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь найти тип встроенного файла, который присутствует на слайде PowerPoint.Если есть простые файлы Excel или Visio, он обнаруживает их.У меня также есть другие встроенные изображения и уравнения, но код выдает следующую ошибку:

Класс не поддерживает автоматизацию или не поддерживает ожидаемый интерфейс

Код приведен ниже, а строка ошибки - отладочная печатьлиния.

enter code here

 For Each oSl In ActivePresentation.Slides
    For x = oSl.Shapes.Count To 1 Step -1
            Set oSh = oSl.Shapes(x)
                Select Case oSh.Type
                Case msoChart, msoEmbeddedOLEObject, msoLinkedOLEObject
                Debug.Print "Slide " & i & " has a " & oSh.OLEFormat.Object.Application.Name & " file"

                End Select
    Next
Next

   Result:
   SLIDE(1): "Slide11"
   #1           "Foot Placeholder 1"    Type:=14 (msoPlaceholder)
   #2           "Title 2"     Type:=14 (msoPlaceholder)
   #3           "Object 3"    Type:=7 (msoEmbeddedOLEObject)
   #4           "Object 4"    Type:=7 (msoEmbeddedOLEObject)
   #5           "Object 5"    Type:=7 (msoEmbeddedOLEObject)
   #6           "Object 10"   Type:=7 (msoEmbeddedOLEObject)
   #7           "Object 11"   Type:=7 (msoEmbeddedOLEObject)
   #8           "Object 15"   Type:=7 (msoEmbeddedOLEObject)

   SLIDE(2): "Slide12"
   #1           "Footer Placeholder 1"      Type:=14 (msoPlaceholder)
   #2           "Title 2"     Type:=14 (msoPlaceholder)
   #3           "Object 4"    Type:=7 (msoEmbeddedOLEObject)

1 Ответ

0 голосов
/ 30 октября 2018

Как предложил Стив Риндсберг, вы должны работать с ShapeObject.LinkFormat.SourceFullName.Ниже будут перечислены все фигуры во всех слайдах для активного представления.Это должно помочь вам решить, что делать дальше.

[LinkFormat.SourceFullName] будет добавлено, когда будет доступно.

Option Explicit

Sub ListAllShapesType()
    Dim oSlide As Slide, oShp As Shape, i As Long
    For Each oSlide In ActivePresentation.Slides
        Debug.Print "SLIDE(" & oSlide.SlideIndex & "): """ & oSlide.Name & """"
        i = 1
        For Each oShp In oSlide.Shapes
            Debug.Print " #" & i, """" & oShp.Name & """", "Type:=" & WhatShapeType(oShp)
            i = i + 1
        Next oShp
        Debug.Print
    Next oSlide
End Sub

Function WhatShapeType(ShapeObject As Shape) As String
    Dim sType As String
    On Error Resume Next
    Select Case ShapeObject.Type
        Case msoAutoShape: sType = msoAutoShape & " (msoAutoShape)"
        Case msoCallout: sType = msoCallout & " (msoCallout)"
        Case msoCanvas: sType = msoCanvas & " (msoCanvas)"
        Case msoChart: sType = msoChart & " (msoChart)"
        Case msoComment: sType = msoComment & " (msoComment)"
        Case msoContentApp: sType = msoContentApp & " (msoContentApp)"
        Case msoDiagram: sType = msoDiagram & " (msoDiagram)"
        Case msoEmbeddedOLEObject: sType = msoEmbeddedOLEObject & " (msoEmbeddedOLEObject)"
        Case msoFormControl: sType = msoFormControl & " (msoFormControl)"
        Case msoFreeform: sType = msoFreeform & " (msoFreeform)"
        Case msoGroup: sType = msoGroup & " (msoGroup)"
        Case msoInk: sType = msoInk & " (msoInk)"
        Case msoInkComment: sType = msoInkComment & " (msoInkComment)"
        Case msoLine: sType = msoLine & " (msoLine)"
        Case msoLinkedOLEObject: sType = msoLinkedOLEObject & " (msoLinkedOLEObject)"
        Case msoLinkedPicture: sType = msoLinkedPicture & " (msoLinkedPicture)"
        Case msoMedia: sType = msoMedia & " (msoMedia)"
        Case msoOLEControlObject: sType = msoOLEControlObject & " (msoOLEControlObject)"
        Case msoPicture: sType = msoPicture & " (msoPicture)"
        Case msoPlaceholder: sType = msoPlaceholder & " (msoPlaceholder)"
        Case msoScriptAnchor: sType = msoScriptAnchor & " (msoScriptAnchor)"
        Case msoShapeTypeMixed: sType = msoShapeTypeMixed & " (msoShapeTypeMixed)"
        Case msoSlicer: sType = msoSlicer & " (msoSlicer)"
        Case msoSmartArt: sType = msoSmartArt & " (msoSmartArt)"
        Case msoTable: sType = msoTable & " (msoTable)"
        Case msoTextBox: sType = msoTextBox & " (msoTextBox)"
        Case msoTextEffect: sType = msoTextEffect & " (msoTextEffect)"
        Case msoWebVideo: sType = msoWebVideo & " (msoWebVideo)"
        Case Else: sType = ShapeObject.Type & " (Undocumented type!)"
    End Select
    sType = sType & " [" & ShapeObject.LinkFormat.SourceFullName & "]"
    WhatShapeType = sType
End Function
Option Explicit

Sub ListAllShapesType()
    Dim oSlide As Slide, oShp As Shape, i As Long
    For Each oSlide In ActivePresentation.Slides
        Debug.Print "SLIDE(" & oSlide.SlideIndex & "): """ & oSlide.Name & """"
        i = 1
        For Each oShp In oSlide.Shapes
            Debug.Print " #" & i, """" & oShp.Name & """", "Type:=" & WhatShapeType(oShp)
            i = i + 1
        Next oShp
        Debug.Print
    Next oSlide
End Sub

Function WhatShapeType(ShapeObject As Shape) As String
    Dim sType As String
    On Error Resume Next
    Select Case ShapeObject.Type
        Case msoAutoShape: sType = msoAutoShape & " (msoAutoShape)"
        Case msoCallout: sType = msoCallout & " (msoCallout)"
        Case msoCanvas: sType = msoCanvas & " (msoCanvas)"
        Case msoChart: sType = msoChart & " (msoChart)"
        Case msoComment: sType = msoComment & " (msoComment)"
        Case msoContentApp: sType = msoContentApp & " (msoContentApp)"
        Case msoDiagram: sType = msoDiagram & " (msoDiagram)"
        Case msoEmbeddedOLEObject: sType = msoEmbeddedOLEObject & " (msoEmbeddedOLEObject)"
        Case msoFormControl: sType = msoFormControl & " (msoFormControl)"
        Case msoFreeform: sType = msoFreeform & " (msoFreeform)"
        Case msoGroup: sType = msoGroup & " (msoGroup)"
        Case msoInk: sType = msoInk & " (msoInk)"
        Case msoInkComment: sType = msoInkComment & " (msoInkComment)"
        Case msoLine: sType = msoLine & " (msoLine)"
        Case msoLinkedOLEObject: sType = msoLinkedOLEObject & " (msoLinkedOLEObject)"
        Case msoLinkedPicture: sType = msoLinkedPicture & " (msoLinkedPicture)"
        Case msoMedia: sType = msoMedia & " (msoMedia)"
        Case msoOLEControlObject: sType = msoOLEControlObject & " (msoOLEControlObject)"
        Case msoPicture: sType = msoPicture & " (msoPicture)"
        Case msoPlaceholder: sType = msoPlaceholder & " (msoPlaceholder)"
        Case msoScriptAnchor: sType = msoScriptAnchor & " (msoScriptAnchor)"
        Case msoShapeTypeMixed: sType = msoShapeTypeMixed & " (msoShapeTypeMixed)"
        Case msoSlicer: sType = msoSlicer & " (msoSlicer)"
        Case msoSmartArt: sType = msoSmartArt & " (msoSmartArt)"
        Case msoTable: sType = msoTable & " (msoTable)"
        Case msoTextBox: sType = msoTextBox & " (msoTextBox)"
        Case msoTextEffect: sType = msoTextEffect & " (msoTextEffect)"
        Case msoWebVideo: sType = msoWebVideo & " (msoWebVideo)"
        Case Else: sType = ShapeObject.Type & " (Undocumented type!)"
    End Select
    ' Append the LinkFormat detail if available (errors will not affect output)
    sType = sType & " [" & ShapeObject.LinkFormat.SourceFullName & "]"
    WhatShapeType = sType
End Function
...